前言
在 Cocos Creator 3.5.0 之后,Cocos Creator 在 Android 平台上的实现改为了采用 okhttp 去进行实现
问题描述
在 Cocos Creator 3.5.0 之后,当游戏进入后台(比如跳转到广告播放、比如进入支付界面)一段时间,WebSocket 链接可能会主动断开
问题分析
- 在游戏进入后台后,游戏线程就会被暂停,一些定时器可能也没法按照预期操作(比如 WebSocket 定时发送一个消息到服务器,模拟 ping)
- 同时 Cocos Creator 在 Android 平台上创建 okhttp 实例的时候,没有指定 pingInterval(默认值为 0,即不自动发送 ping 帧)
在上面两个前提下,WebSocket 实际上并没有和服务器保持持续的 ping/pong ,从而导致一段时间后,连接就会断开。
解决方案
在 CocosCreator 创建 okhttp 实例的时候,指定 pingInterval 即可(定时间隔可视业务情况调整)
ps:
-
CocosWebSocket.java位置:引擎根目录/native/cocos/platform/android/java/src/com/cocos/lib/websocket/CocosWebSocket.java

