Socket.io swift 客户端自动断开连接

kin*_*nza 5 multithreading ios socket.io swift

我在我的应用程序中使用 socket.io swift 客户端(版本 13.1.0)一切正常,但有时会发生这种情况:套接字断开连接(10 次中有 3 次)。断开连接后,它尝试并成功连接,但此后再次断开连接,这形成了连接-断开状态的无限循环。我被搜索但没有得到任何可能的解决方案。我的代码很简单。我创建了一个单例类,其代码如下:

class SocketIOManager: NSObject {


    static let sharedInstance = SocketIOManager()
    let manager = SocketManager(socketURL: URL(string: "URL")!, config: [.compress, .log(true), .reconnects(false)])

    override init() {
       super.init()
       let socket = manager.defaultSocket

        socket.on("connect") {data, ack in
           NSLog("*************** SOCKET CONNECTED")
        }
    }

    func establishConnection() {
       let socket = manager.defaultSocket
       socket.connect()
    }
}
Run Code Online (Sandbox Code Playgroud)

除此之外,当应用程序进入后台时,我优雅地断开套接字,然后在应用程序进入前台时再次连接它。

我尝试过的事情:

  • 尝试配置参数:forceNew(true/false)、reconnects(true/false)、forceWebsockets(true/false)
  • 为了保持连接处于活动状态,我每 10 秒向服务器发送一个空参数,以便它知道应用程序处于活动状态。

我的观察: 我在同一个项目中使用 Alamofire,它在后台线程中发送请求。可能在某个时间点两个库都开始使用相同的后台线程和套接字连接中断。

这可能吗?如果我的理解有误,请纠正我。我应该怎么做才能克服这个套接字断开连接的问题。我是 iOS 的新手,所以任何帮助将不胜感激。