ios - Socket.io swift客户端自动多次重新连接
问题描述
我正在为我的应用程序使用 Socket.IO-Client-Swift', '~> 13.1.0'。我已成功将我的应用程序与 Socket 服务器连接,但问题是,它被多次重新连接。结果,也许我无法向服务器发送任何内容。谁能帮我这个?
这是我的代码:
类 SocketIOManager:NSObject {
var locationReceiverDelegate: LocationReceiverDelegate?
static let shared = SocketIOManager()
let manager = SocketManager(socketURL: URL(string: "server-url")!, config: [.log(true), .connectParams(["token" : "token-string"])])
var socket : SocketIOClient!
override init() {
super.init()
socket = manager.defaultSocket
self.connectSocket()
}
func connectSocket() {
socket.on(clientEvent: .connect) {data, ack in
print("socket connected")
}
self.socket.on("connected") { ( dataArray, ack) in
print("dataArray",dataArray)
}
self.socket.on("error") { (data, ack) in
print("error-->", data)
}
self.socket.on("location::share.error") { (data, ack) in
print("location::share.error-->", data)
}
self.socket.on("location::receive") { (data, ack) in
print("location::receive-->", data[0])
}
}
func establishConnection() {
print("in connect socket")
socket.connect()
}
func disconnectSocket() {
socket.disconnect()
print("in disconnect socket")
}
func updateCurrentLocation(myLocation: CLLocation) {
print(myLocation.coordinate.latitude)
print(myLocation.coordinate.longitude)
print(myLocation.course)
let data : Dictionary<String,Any> = [
"latitude": myLocation.coordinate.latitude,
"longitude": myLocation.coordinate.latitude,
"angle": myLocation.course
]
let jsonData = try! JSONSerialization.data(withJSONObject: data)
print(jsonData)
let jsonString = NSString(data: jsonData, encoding: String.Encoding.utf8.rawValue)
print((String(describing: jsonString!)))
socket.emit("location::share", "\(String(describing: jsonString!))")
}
}
解决方案
socket.emit(Your_Key, with: [Your_Data])
也许这就是您的服务器查找数据的方式!(发出您的数据数组)。在发送数据之前检查您的套接字状态。
推荐阅读
- bash - tmp 中超过 90 天的目录 | root 权限被拒绝 | 读写的所有问号| 用户可以看到 root 拥有 dir
- javascript - 将 onChange 处理程序添加到 svelte 中的输入
- javascript - 如何使用 new Map() 设置地图的初始值?
- javascript - “未捕获的语法错误:导入声明可能只出现在模块的顶层”:1:18 再次询问
- c# - 如何使用 InMemory 测试 Entity Framework Core 数据库,并为大量行提供插入功能
- c# - 对于 Snowflake .NET 连接器,我可以在原始(Pascal)外壳中获取列名吗?
- amazon-web-services - [XX000][500310] [Amazon](500310) 无效操作:解析的清单不是有效的 JSON 对象
- c - C中的字符串如何分配指向char的指针?
- python - 是否可以使用 camelot 仅从 pdf 中提取表格?它应该只检测表格而不是文本
- r - R igraph:在 igraph 中寻找最短路径,为其添加权重并寻找替代路径