当电话浏览器具有打开的连接并且用户锁定了屏幕时,在某些时候,他们将不再具有WebSocket连接。
发生这种情况时会触发什么事件?是否调用了WebSocket.onerror
或WebSocket.onclose
处理程序,如果是,则在屏幕锁定/应用程序暂停或应用程序再次启动时发生这种情况吗?
(还有一个额外的问题:这是标准化的,还是浏览器的行为有所不同?如果是,则如何?)
答案 0 :(得分:2)
我已经做了一些自我测试,答案似乎是:未触发任何事件。尽管连接确实断开,但没有触发error
或close
事件,即使浏览器重新启动也不会触发。因此,解决此问题的主要方法似乎是定期检查连接状态,并在需要时重新连接-如果连接断开服务器端,则需要指数补偿。 (或者让一个库为您执行此操作,尽管我还没有找到一个维护良好的基于客户端的基于浏览器的WebSocket库来执行此操作。)
this article的作者证实了这一点:
移动设备引入了新的连接问题类别;如果移动设备被锁定,进入睡眠状态或应用程序移至后台,则活动的WebSocket连接可能会变得无响应,并且无法正确关闭自身。