Socket.io Swift客户端处理程序不会触发

时间:2018-05-02 08:34:47

标签: ios swift socket.io

我遇到了soket.io客户端的问题,当我阅读here时,您应该将套接字管理器定义为全局变量,因此它不会被ARC发布。

考虑到我的代码:

let manager = SocketManager(socketURL: URL(string: Api.SOCKET)!, config: [.log(true), .path(Api.SOCKET_PATH)])
let socket: SocketIOClient?
....

override func viewDidLoad() {
    super.viewDidLoad()
    subscribeOnTransaction() {  }
}

func subscribeOnTransaction() {
     if self.socket == nil {       

        socket = manager.socket(forNamespace: Api.SOCKET_PATH)
        subscribeToChangesChannel { }
        socket?.on(clientEvent: .connect) { data, ack in
            self.socket?.emit("transaction", self.sellOrder.id!)

        }

        self.socket?.on(clientEvent: .statusChange) {data, ack in
            print(data)
        }
        self.socket?.connect()
    }
}

func subscribeToChangesChannel(completion: @escaping () -> Void) { 
   if let socket = self.socket {

        socket.on("transaction/\(self.sellOrder.id!)") { data, ack in
            print(data, ack)
            if data.count > 0 {
                let rawResult = data[0]
                if let result = rawResult as? [String: Any] {
                    let newRawValue = result["new_val"]
                    if let transaction = self.parseSocketResponse(newRawValue) {
                        self.openTransactionTrackingScreen(transaction)
                        completion()
                    }
                }
            }
        }
    }
}

但是当我设置断点时它不会调用处理程序。建立连接,一切都很好,打开日志我

  

得到了投票回复   LOG SocketEnginePolling:得到民意调查消息:

可能是什么问题?有任何想法吗?非常感谢任何帮助,谢谢

0 个答案:

没有答案