ios - 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: []
那么,我的代码有什么问题?
解决方案
推荐阅读
- mysql - 不允许 Kubernetes pod 主机连接到这个 mysql 服务器
- python - 如何使用 scikit-learn python 训练具有标准化数据集的分类算法
- c# - WPF、Caliburn Micro 和 Dapper - Datagrid 复选框绑定
- java - 合并排序中如何执行多个递归调用?
- python - Django Shell API KeyError
- python - 执行 Spark TrainValidationSplit 拟合时出现 java.lang.StackOverflowError
- html - 使用 VBA 在 IE11 中选择下拉列表选项
- laravel - SQL查询类似集合的概念(补或除外)
- javascript - javascript:apex.navigation.redirect 在 chrome 上不起作用
- firebase - 如何在 Flutter 中跟踪屏幕视图并将其显示在应用程序中