我已阅读Swift的 Socket.io latest documentation。还有一个新连接的例子:
let manager = SocketManager(socketURL: URL(string: "http://localhost:8080")!, config: [.log(true), .compress])
let socket = manager.defaultSocket
所以我创建了一个类 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)
}
}
}
然后我只在我的ViewController中调用 SocketIOManager.connectSocket()方法。但服务器产生错误。我没有开发服务器端。我只需要知道 - 我是否正确创建连接?这些天你如何通过Socket.io连接socket?
P.S服务器错误 - 必须提供jwt(似乎没有令牌,但有)。
UPDATE(带虚拟值):
我像这样传递令牌:
static let manager = SocketManager(socketURL: URL(string: "https://myurl:443?token=\(token)")!)
static let socket = manager.defaultSocket
答案 0 :(得分:3)
因此,要解决此问题,我们必须采取以下措施:
<强> CODE:强>
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()
}
}
答案 1 :(得分:1)
看起来您将token
设置在错误的位置。根据{{3}},token
应在配置中设置为标头参数:
manager.config = SocketIOClientConfiguration(
arrayLiteral: .compress, .connectParams(["Authorization": token])
)
尝试以这种方式管理token
。