Nas*_*omo 2 ios socket.io swift
我已阅读最新的文档的Socket.io的斯威夫特。还有一个新连接的示例:
let manager = SocketManager(socketURL: URL(string: "http://localhost:8080")!, config: [.log(true), .compress])
let socket = manager.defaultSocket
Run Code Online (Sandbox Code Playgroud)
因此,我创建了一个SocketIOManager类,如下所示:
class SocketIOManager: NSObject {
static let manager = SocketManager(socketURL: URL(string: "myurl.com:443"))
static let socket = manager.defaultSocket
class func connectSocket(){
socket.connect()
}
class func reciveMessage(){
socket.on("new-message-mob") { (dataArray, ack) in
print(dataArray.count)
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我只是在ViewController中调用方法SocketIOManager.connectSocket()。但是服务器产生错误。我不开发服务器端。我只需要知道-我是否正确建立了连接?这些天您如何通过Socket.io连接到套接字?
PS Server错误-必须提供jwt(似乎没有令牌,但有令牌)。
UPDATE(带有伪值):
我像这样传递令牌:
static let manager = SocketManager(socketURL: URL(string: "https://myurl:443?token=\(token)")!)
static let socket = manager.defaultSocket
Run Code Online (Sandbox Code Playgroud)
看起来你设置token在错误的地方。根据问题,token应该在配置中设置为header参数:
manager.config = SocketIOClientConfiguration(
arrayLiteral: .compress, .connectParams(["Authorization": token])
)
Run Code Online (Sandbox Code Playgroud)
尝试以token这种方式管理您。
因此,要解决此问题,我们必须采取以下行动:
码:
class SocketIOManager: NSObject {
static let manager = SocketManager(socketURL: URL(string: "https://yoururl.com:443")!, config: [.log(true), .compress])
static let socket = manager.defaultSocket
class func connectSocket(){
self.manager.config = SocketIOClientConfiguration(
arrayLiteral: .connectParams(["token": token], .secure(true)
)
socket.connect()
}
class func disconnectSocket(){
socket.disconnect()
}
}
Run Code Online (Sandbox Code Playgroud)