【发布时间】:2019-08-06 04:38:59
【问题描述】:
我正在尝试快速实现 socket.io-client。它没有按预期工作。我无法读取服务器对我的请求的任何响应。我的套接字正在连接,但在那之后,我无法调用事件并获得他们的响应。 斯威夫特 4,Xcode 10
我正在使用一个全局类将套接字函数声明为“clsGlobal”并在不同的视图控制器中调用套接字函数。
导入基础 导入 UIKit 导入 SocketIO
class clsSocket: NSObject {
let appdelegate = UIApplication.shared.delegate as! AppDelegate
static var manager = SocketManager(socketURL: URL(string: "my url")!, config: [.log(true), .reconnects(true)])
static var socket = manager.defaultSocket
static func ConnectSocket(){
socket.connect()
print(socket.status)
socket.on("locationsUpdate", callback: { data,ack in
print(data)
let resp = data[0] as! Any
print(resp)
})
}
static func updateLocation(dId:NSNumber, uId:NSNumber, distance:Double){
let datafield : [String:Any] = ["id":dId,
"userid": uId,
"travelledDistance":distance
]
let data = try? JSONSerialization.data(withJSONObject: datafield)
if socket.status == .connected {
socket.emit("updateLocation", data!)
socket.emit("requestLocations")
}
}
static func dogDisconnect(dogid:NSNumber, userid:NSNumber){
let datafield = ["dId":did, "uId":userid]
let dataobj = try? JSONSerialization.data(withJSONObject: datafield)
socket.emit("disconnect", dataobj!)
socket.disconnect()
socket.off("requestLocations")
}
}
如何知道服务器是否连接以及如何打印来自服务器的响应?
【问题讨论】:
-
尝试 socket.onAny { response in },否则在您的连接参数中查找错误。我的连接是 manager = SocketManager(socketURL: URL(string: APIConfigs.apiURL)!, config: [.log(false), .reconnects(true), .connectParams(["token": token])])
-
我试过了,但没用。
-
没有连接?可能是服务器问题?
-
我更新了结构...仍然无法正常工作。
-
为什么所有方法都是静态的?为什么不在 init 中设置令牌?
标签: swift