1

我有一个使用 Socket.IO 支持 WebSocket 的移动 Web 应用程序,它运行良好,除非我按下主页按钮然后返回 Safari。如果我通过转到另一个应用程序来后台运行 Safari,然后再返回到它,则 WebSocket 连接将不再起作用。

注意:转到 Safari 中的不同选项卡然后返回不会破坏 WebSocket——我实际上必须离开 Safari 应用程序。

尝试通过套接字发送消息时,我的 Web 控制台上没有出现任何错误,它只是不起作用。有任何想法吗?

4

1 回答 1

5

当应用程序在 iOS 中被“最小化”时,它不仅仅是将应用程序放在后台,而且更重要的是,它缓存应用程序,实际上停止处理它,以节省电池并防止任何后台应用程序工作和做“坏事” ”。

这就是它中断连接的原因,这是 iOS 的正常行为。

要恢复会话,您的服务器端应用程序逻辑应该实现会话并能够在新连接上恢复它(如果它不久前关闭)。

有关信息,Android 库存浏览器将保持连接,但会冻结 JS 的处理,因此如果您的应用程序实现超时,它将在您的服务器识别为无响应后丢弃 Android 客户端。转到另一个选项卡也会降低 JS 的性能,这样会减慢定时函数和回调的内部堆栈,并且不要期望它们以与您专注于选项卡时相同的频率运行。

于 2012-12-20T13:39:56.093 回答