Egret社区
1银子
本帖最后由 大马哈鱼 于 2019-2-19 16:22 编辑

我们在使用Egret 4.1.1 runtime版 (ios-support-5.0.9)
测试发现我们在iOS上无法连接到指定的WebSocket服务器(websocket.connect之后会报onError,接着onClose)
同样的地址用Android是可以正常连接的.
并且iOS经过抓包发现似乎根本没有数据包发送出去.

所以我们想要知道为什么连接失败了, 查看了白鹭的runtime的ts源码, 我们写了测试代码:
[JavaScript] 纯文本查看 复制代码
let socket = new __global["egret_native"]["WebSocket"]('wss://hostname.com:port');
socket.onOpen = function () {
        log('==> onOpen');
};
socket.onClose = function () {
        log('==> onClose');
};
socket.onError = function (errorCode:number) {
        log('==> onError ', errorCode);
};
socket.onMessage = function (message) {
        log('==> onMessage ', message);
};

然后发现onError中传入的errorCode是1
这个errorCode似乎不是标准的WebSocket close code. 应该是白鹭内部定义的错误码.
不知道具体是什么意思, 文档里也没有任何定义.
求官方解释一下错误码的含义~ 最好有错误码对应的表.

=========== 补充几个我们发现的细节 =============
1 正常的地址是连的上的, 但是我们测试连接高防服务器的时候连不上
2 通过wireshark抓包, 发现连接高防的时候完全没有数据包往来(非常奇怪, 感觉没有尝试发送就失败了)
3 connect发起后立刻就会失败(现象与第2点匹配)

分享到 :
0 人收藏

2 个回复

倒序浏览
tardis  登堂入室 | 2019-2-19 10:41:53
建议做几个尝试:
1.new egret.WebSocket和链接的的逻辑写在一个setTimeout里面 如:(<any>egret).setTimeout(function () {self.socket = new egret.WebSocket();xxxx;self.socket.connectByUrl(xxx);}
2.看看服务器有没有设发送上限,是不是发送的数据超标了
linguifa  登堂入室 | 4 天前
tardis 发表于 2019-2-19 10:41
建议做几个尝试:
1.new egret.WebSocket和链接的的逻辑写在一个setTimeout里面 如:(egret).setTimeout(fun ...

为什么要放在 setTimeout里面?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号

Powered by Discuz! X3.2 © 2001-2019 Comsenz Inc.

返回顶部