手机屏幕锁定时,WebSocket连接会发生什么?

时间:2018-10-02 12:41:48

标签: websocket mobile-safari chrome-for-android chrome-mobile firefox-android

当电话浏览器具有打开的连接并且用户锁定了屏幕时,在某些时候,他们将不再具有WebSocket连接。

发生这种情况时会触发什么事件?是否调用了WebSocket.onerrorWebSocket.onclose处理程序,如果是,则在屏幕锁定/应用程序暂停或应用程序再次启动时发生这种情况吗?

(还有一个额外的问题:这是标准化的,还是浏览器的行为有所不同?如果是,则如何?)

1 个答案:

答案 0 :(得分:2)

我已经做了一些自我测试,答案似乎是:未触发任何事件。尽管连接确实断开,但没有触发errorclose事件,即使浏览器重新启动也不会触发。因此,解决此问题的主要方法似乎是定期检查连接状态,并在需要时重新连接-如果连接断开服务器端,则需要指数补偿。 (或者让一个库为您执行此操作,尽管我还没有找到一个维护良好的基于​​客户端的基于浏览器的WebSocket库来执行此操作。)

this article的作者证实了这一点:

  

移动设备引入了新的连接问题类别;如果移动设备被锁定,进入睡眠状态或应用程序移至后台,则活动的WebSocket连接可能会变得无响应,并且无法正确关闭自身。