当 phone 的屏幕锁定时,WebSocket 连接会发生什么情况?

What happens with WebSocket connections when a phone's screen locks?

当 phone 浏览器有一个打开的连接,而用户锁定屏幕时,在某个时刻他们将不再有 WebSocket 连接。

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

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

我自己做了一些测试,答案似乎是:没有触发任何事件。尽管连接确实断开了,但没有触发 errorclose 事件,即使浏览器重新启动也不会触发。因此,处理此问题的主要方法似乎是定期检查连接状态,并在需要时重新连接 - 在连接断开服务器端的情况下使用指数退避。 (或者让一个库为你做这件事,虽然我还没有找到一个适当维护的基于客户端浏览器的 WebSocket 库来做这件事。)

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

Mobile devices introduce a new category of connection issues; if a mobile device is locked, goes to sleep or the application is moved to the background, an active WebSocket connection may become unresponsive and not close itself properly.