首页 > 解决方案 > Swift SocketIO 无法使用日志“Ack:false”连接到通道

问题描述

这是我第一次使用 SocketIO 并且有这样的套接字信息:

Link socket: https://dev-cpl-backend-echo-auth-v2.staging-bitcastle.work;
Channel: App.Orders_USDT_BTC
Event: App\\Events\\OrderTransactionCreated

我编写了一个用于处理套接字连接的包装类,它成功连接到套接字但无法监听事件:

import SocketIO

class CPLSocketManager: NSObject {
static let sharedSocket = CPLSocketManager()

var socket: SocketIOClient!
private let manager = SocketManager(socketURL: URL(string: "https://dev-cpl-backend-echo-auth-v2.staging-bitcastle.work/")!, config: [.log(true), .compress])

private override init() {
    super.init()
    socket = manager.defaultSocket
}

func startSocket() {
    socket.on(clientEvent: .connect) { data, ack in
        print(data)
        print("-----SOCKET CONNECTED-----")
    }
    
    socket.on(clientEvent: .error) { data, ack in
        print(data)
        print("-----SOCKET ERROR-----")
    }
    
    socket.on(clientEvent: .disconnect) { data, ack in
        print(data)
        print("-----SOCKET DISONNECT-----")
    }
    
    socket.on(clientEvent: .reconnect) { data, ack in
        print(data)
        print("-----SOCKET RECONNECT-----")
    }

    socket.connect()
}

func stopSocket() {
    socket.disconnect()
}

func connectToChannel(channelName: String, eventName: String) {
    let dict = ["channel": channelName]
    socket.emit(eventName, with: [dict])
    socket.on(channelName) { data, ack in
        print(">>channel>>>\(data)>>>>>>>>>")
    }
}

func listen(eventName: String) {
    socket.on(eventName) { data, ack in
        print("==event==\(data)>>>>>>>>>>>")
    }
}

}

在我的视图控制器中,我设置了频道名称和事件名称:

CPLSocketManager.sharedSocket.connectToChannel(channelName: "App.Orders_USDT_BTC", eventName: "App\\Events\\OrderTransactionCreated")
    CPLSocketManager.sharedSocket.listen(eventName: "App\\Events\\OrderTransactionCreated")

但是当构建和运行项目时,就会进入我的屏幕。套接字日志显示:

2021-11-03 11:24:14.454206+0700 BitcastleApp[26848:813310] LOG SocketIOClient{/}: Emitting: 2["App\\Events\\OrderTransactionCreated",{"channel":"App.Orders_USDT_BTC"}], Ack: false
2021-11-03 11:24:14.454292+0700 BitcastleApp[26848:813410] LOG SocketEngine: Writing ws: 2["App\\Events\\OrderTransactionCreated",{"channel":"App.Orders_USDT_BTC"}] has data: false
2021-11-03 11:24:17.933986+0700 BitcastleApp[26848:813310] LOG SocketIOClient{/}: Adding handler for event: App.Orders_USDT_BTC
2021-11-03 11:24:17.934048+0700 BitcastleApp[26848:813410] LOG SocketEngineWebSocket: Sending ws: 2["App\\Events\\OrderTransactionCreated",{"channel":"App.Orders_USDT_BTC"}] as type: 4
2021-11-03 11:24:24.582901+0700 BitcastleApp[26848:813310] LOG SocketIOClient{/}: Adding handler for event: App\Events\OrderTransactionCreated
2021-11-03 11:24:24.582922+0700 BitcastleApp[26848:813410] LOG SocketEngine: Writing ws:  has data: false
2021-11-03 11:24:24.583134+0700 BitcastleApp[26848:813410] LOG SocketEngineWebSocket: Sending ws:  as type: 2
2021-11-03 11:24:24.584207+0700 BitcastleApp[26848:813403] [boringssl] boringssl_metrics_log_metric_block_invoke(144) Failed to log metrics
2021-11-03 11:24:24.584404+0700 BitcastleApp[26848:813399] Connection 64: missing error, so heuristics synthesized error(1:53)
2021-11-03 11:24:24.584442+0700 BitcastleApp[26848:813399] Connection 64: encountered error(1:53)
2021-11-03 11:24:24.615079+0700 BitcastleApp[26848:813310] [TableView] Changing the background color of UITableViewHeaderFooterView is not supported. Use the background view configuration instead.
2021-11-03 11:24:24.622056+0700 BitcastleApp[26848:813310] LOG SocketIOClient{/}: Handling event: ping with data: []
2021-11-03 11:24:24.736974+0700 BitcastleApp[26848:813399] LOG SocketEngine: Got message: 3
2021-11-03 11:24:24.737061+0700 BitcastleApp[26848:813310] LOG SocketIOClient{/}: Handling event: pong with data: []

那么,我的代码有什么问题?

标签: iosswiftsocket.io

解决方案


推荐阅读