我有一个使用Socket.IO进行WebSocket支持的移动网络应用程序,除非我按下主页按钮然后返回Safari,它才能正常工作。如果我通过访问不同的应用程序来回溯Safari,然后回到它,WebSocket连接将不再起作用。
值得注意的是:转到Safari中的另一个标签然后返回不会破坏WebSocket - 我必须离开Safari应用程序。
尝试通过套接字发送消息时,我的Web控制台上没有出现任何错误,它只是不起作用。有什么想法吗?
答案 0 :(得分:4)
当iOS中的应用程序“最小化”时,它不仅仅是将应用程序放在后台,而是更多,它会缓存应用程序,并实际上阻止它处理,以节省电池并防止任何后台应用程序工作和执行“坏事”。
这就是它制动连接的原因,这是iOS的正常行为。
要恢复会话,您的服务器端应用程序逻辑应该实现会话,并且能够在新连接上恢复它,如果它不久前关闭的话。
有关信息,在Android股票浏览器上将保持连接,但会冻结处理的JS,因此如果您的应用程序实现超时,它将在您的服务器将其识别为无响应后丢弃Android客户端。转到另一个Tab会降低JS的性能,使内部堆栈的定时函数和回调速度变慢,并且不要指望它们与您关注选项卡时的频率相同。