测试的环境:vivo z5 Android9.0 webSocket未实现团活
当小程序前后端之间建立webSocket后,我测试过以下4种情况。
-
webSocket建立的小程序页面,亮屏且前后台之间无websocket交互。------ 5分钟后,服务端主动断开websocket连接,小程序端触发wx.onSocketClose(),未触发wx.onSocketError();
-
webSocket建立的小程序页面,熄屏且前后台之间无websocket交互。------ 5分钟后,服务端主动断开websocket连接,小程序端触发wx.onSocketClose(),未触发wx.onSocketError();
-
webSocket建立的小程序页面,小程序切微信后台。------ 10s内,小程序端主动断开websocket连接,小程序端触发wx.onSocketClose(),未触发wx.onSocketError();
-
webSocket建立的小程序页面,微信应用切手机后台。------ 10s内,小程序端主动断开websocket连接,小程序端触发wx.onSocketClose(),未触发wx.onSocketError();
补充:实测上述情况1、2中,提到的5分钟,与服务端程序所设置的session超时时间无关。
经过了实际测试,前两种情况和您说的有些不同:
我的后端是php laravel,使用的是swoole的websocket服务器,我在后端没有为websocket服务器设置任何的针对客户端的心跳轮询,也就是在网络连接正常情况下,保证后端在任何时候都不会主动断开连接。
在以上基础之上,测试的结果是,只要小程序没有切微信后台或者没有切手机后台,在websocket建立的页面,是不会在客户端主动断开连接的,在我试验的基础上(后端也不会主动断开连接的情况下),不论手机亮屏或者息屏,ws连接都是不会中断的。我每种情况试了有帮个小时。哈哈。
后两种情况,官方文档上描述的有,是完全正确的。