现象:游戏中主动断开wifi,游戏断线,这时候再开启wifi,发现几分钟内都连接不上服务器(估计有5分钟以上),等过了这5分钟后,就连上了,由于项目已上线,玩家反映的多,比较急。
另外,本人在连接不上服务器期间,拿第三方网络测试工具发现服务器的ip根本ping不通,没有路由路径,感觉像是ios主动把这个ip拉黑了几分钟,然后就好了,不知个有同道中人遇到,求解决办法
帮顶一下
帮顶一下!
libwebsockets 是直接用bsd socket的接口,iOS上断开网络,重新连上,无法触发bsd socket 断开。
苹果建议使用CFNetwork而不要用bsd socket。
可以尝试先参考下这个补丁:
https://github.com/cocos2d/cocos2d-x/pull/18023
在1.6中,我们会替换libwebsockets为facebook的SocketRocket以彻底解决这个问题。
PR已经被合并:
https://github.com/cocos-creator/cocos2d-x-lite/pull/685
在上层做一个心跳机制。 然后自己做一个timeout就妥了。 我们幼麟棋牌就是这样做的,目前妥妥的
嗯,麒麟子说的也是个办法,可以作为一个临时解决方案。
嗯,必须的。 项目不可能总是等引擎,必要的时候肯定是自己要用临时的办法处理。 比如,我们的热更新也是自己写的,当时是处于1.3.2版本。 现在由于表现稳定,就依然延用。
网络断开不触发onClose这个确实有,但我表达的不是这个问题,这个问题可以通过主动心跳包解决,我表达的意思是,在正常游戏中,断开wifi后,再连上wifi,会出现这个ip被ios屏蔽几分钟的情况,用第三方网络软件测试发现根本ping不通这个ip,几分钟后就好了
这个问题可能是路由器策略导致,并非引擎问题,在此标识,免误世人
会合并进Cocos2d-x, 先在creator上验证一把。