Egret社区
1银子
最近网络被攻击,导致connect好几秒才有返回结果,再这期间,发现点击任何UI界面的按钮都无效,开始以为是逻辑错误,后面弄了个干净的空工程,然后模拟了网络不好的情况,比如,我让同事开了个WIFI热点,让他把WIFI关掉,然后我的手机连接他的热点,这样我websocket对外连接也会等好几秒才会失败,此时发现connect的确会组赛UI点击事件,这个问题从表明推测是网络读取和鼠标事件处理都同在一个IO线程里面,一个阻塞会导致其他都无法执行,同时,点击事件无法响应的时候UI动画还顺利执行,说明UI动画逻辑是另外一个独立的线程?渲染又是一个线程?这个问题希望官方出门给个说法,苹果和安卓手机都会有这种问题,PC上不会有

分享到 :
0 人收藏

2 个回复

倒序浏览
li574000  登堂入室 | 2018-7-29 11:28:32
我弄了个定时器,每隔3秒调用下面的函数发起一个连接用来测试
private initSocketAndConnect() {


        egret.log("发起一个连接");

        //this.clearSocket();

        this.webSocket = new egret.WebSocket();
        //设置数据格式为二进制,默认为字符串
        this.webSocket.type = egret.WebSocket.TYPE_BINARY;
        //添加收到数据侦听,收到数据会调用此方法
        this.webSocket.addEventListener(egret.ProgressEvent.SOCKET_DATA, this.onReceiveMessage, this);
        //添加链接打开侦听,连接成功会调用此方法
        this.webSocket.addEventListener(egret.Event.CONNECT, this.onSocketOpen, this);
        //添加链接关闭侦听,手动关闭或者服务器关闭连接会调用此方法
        this.webSocket.addEventListener(egret.Event.CLOSE, this.onSocketClose, this);
        //添加异常侦听,出现异常会调用此方法
        this.webSocket.addEventListener(egret.IOErrorEvent.IO_ERROR, this.onSocketError, this);
        //连接服务器
        this.webSocket.connect("*.*.*.*", 10401);

    }
服务器地址用一个外网地址,保证连接会超时,内网自己手机断掉wifi会立即返回,测试不出来的,要按照我上面说的方法测试
li574000  登堂入室 | 2018-8-9 17:03:40
后面我用5.26版本的试验了下没问题了,但是我的版本还是5.015的,官方大神有没有什么解决方案,我现在项目已经运营了,整体更新到5.26已经不现实了, 不知道有什么办法修复没有
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

返回顶部