Swift SocketIO 客户端未保持连接
Swift SocketIO Client not holding connection
我正在尝试连接到套接字。当我启动或关闭我的应用程序时,我可以在我的终端中看到连接连接和断开连接,但每当我尝试发出时,我都会收到错误消息
SocketIOClient:处理事件:数据错误:["Tried emitting connect when not connected"]
如果我在终端中显示为已连接,为什么我的应用无法识别连接?
我正在使用 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()
}
}
这可能与您的后端有关。
我正在处理的那个要求客户端每 10 秒发送一次 'keep alive' 消息,否则它将终止连接。
我必须做的是创建 NSTimer 并发出如下所示的简单消息:
func keepAlive(){
let socketData = [Key.type: "serviceAlive"] as [String : Any]
socket.emit("message", socketData)
}
socket.io 使用 ping/pong 方案在客户端和服务器之间定期发送数据包。如果那组常规传输被中断,那么客户端或服务器将知道另一端不再连接。此行为已内置于 socket.io 中。
我正在尝试连接到套接字。当我启动或关闭我的应用程序时,我可以在我的终端中看到连接连接和断开连接,但每当我尝试发出时,我都会收到错误消息
SocketIOClient:处理事件:数据错误:["Tried emitting connect when not connected"]
如果我在终端中显示为已连接,为什么我的应用无法识别连接?
我正在使用 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()
}
}
这可能与您的后端有关。 我正在处理的那个要求客户端每 10 秒发送一次 'keep alive' 消息,否则它将终止连接。
我必须做的是创建 NSTimer 并发出如下所示的简单消息:
func keepAlive(){
let socketData = [Key.type: "serviceAlive"] as [String : Any]
socket.emit("message", socketData)
}
socket.io 使用 ping/pong 方案在客户端和服务器之间定期发送数据包。如果那组常规传输被中断,那么客户端或服务器将知道另一端不再连接。此行为已内置于 socket.io 中。