问题描述
这对我们来说是一个真正的脑筋急转弯
我们知道 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 (将#修改为@)