微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

iOS StarScream、WebSocket 有时不会在应用程序前台重新连接

如何解决iOS StarScream、WebSocket 有时不会在应用程序前台重新连接

这对我们来说是一个真正的脑筋急转弯

我们知道 iOS 在一段时间后会在后台关闭应用程序的 WebSocket 连接。

我们注意到,每次发生这种情况并且应用返回到前台时,我们的套接字委托都会收到 const positive= document.getElementById("positive").id; const negative= document.getElementById("negative").id; 消息。 当一切正常时,我们很快就会收到 websocketDiddisconnect 消息。

这里的假设是 StarScream 正在处理前台自动重新连接

但是,在一小部分情况下,客户端仅在前台收到 websocketDidConnect,而从未收到 websocketDiddisconnect 消息。

此外,我们尝试在前台手动确定此断开连接:

websocketDidConnect

套接字在前台备份的情况下,我们看到 private var serverSocket: WebSocket? init() { NotificationCenter.default.addobserver(self,selector: #selector(reconnect),name: UIApplication.willEnterForegroundNotification,object: nil) } @objc func reconnect() { LogManagerProvider.shared.info("Reconnecting WebSocket") LogManagerProvider.shared.info((serverSocket?.isConnected == true) ? "Before Reconnect Attempt: Already Connected" : "Before Reconnect Attempt: disconnected") self.serverSocket?.connect() } 但是在失败的情况下,我们会看到 serverSocket.isConnected == true,并且 serverSocket.isConnected == false 调用不会像我们预期的那样重新连接套接

有没有人以前见过这个,或者知道可能是什么问题?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。