【问题标题】:Swift SocketIO Client not holding connectionSwift SocketIO 客户端未保持连接
【发布时间】:2016-12-18 18:20:53
【问题描述】:

我正在尝试连接到套接字。当我启动或关闭我的应用程序时,我可以在终端中看到连接连接和断开连接,但每当我尝试发出时,我都会收到错误

SocketIOClient:处理事件:数据错误:[“未连接时尝试发出连接”]

如果我在终端中显示为已连接,为什么我的应用无法识别连接?

我使用 Ratchet 作为 php 套接字服务器。

class SocketIOManager: NSObject {
    var socket: SocketIOClient?
    override init() {
        super.init()
        self.socket = SocketIOClient(socketURL: URL(string: "http://166.62.121.191:8495")!, config: [.log(true), .reconnects(true), .reconnectWait(10), .forcePolling(true), .forceWebsockets(true)])
    }

    static let instance = SocketIOManager()

    func establishConnection() {
        socket?.onAny { (event: SocketAnyEvent) -> Void in
            print("Got event: \(event.event), with items: \(event.items)")
        }
        socket?.on("connect") { (data, ack) in
            print(data)
        }
        socket?.connect()
    }

    func closeConnection() {
        socket?.disconnect()
    }
}

【问题讨论】:

    标签: swift socket.io ratchet


    【解决方案1】:

    这可能与您的后端有关。 我正在处理的一个要求客户端每 10 秒发送一次“保持活动”消息,否则它将终止连接。

    我要做的是创建 NSTimer 并发出一条简单的消息,如下所示:

        func keepAlive(){
           let socketData = [Key.type: "serviceAlive"] as [String : Any]
           socket.emit("message", socketData)
        }
    

    socket.io 使用 ping/pong 方案定期在客户端和服务器之间发送数据包。如果该组常规传输中断,则客户端或服务器将知道另一端不再连接。这个行为已经内置在 socket.io 中了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-27
      • 1970-01-01
      • 2019-05-30
      • 2019-11-05
      • 1970-01-01
      • 2020-10-20
      • 1970-01-01
      • 2022-08-18
      相关资源
      最近更新 更多