【问题标题】:What happens with WebSocket connections when a phone's screen locks?当手机屏幕锁定时,WebSocket 连接会发生什么?
【发布时间】:2018-10-08 18:20:12
【问题描述】:

当手机浏览器有一个打开的连接,并且用户锁定了屏幕,那么在某个时候他们将不再有一个 WebSocket 连接。

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-17
      • 2014-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多