#ios #socket.io #swift5
#iOS #socket.io #swift5
Вопрос:
Я очень новичок в Socket IO. Мое требование — подключиться к сокету с URL-адресом и присоединиться к определенной комнате с некоторым уникальным строковым значением идентификатора, таким как «join_id». После того, как я успешно присоединился к этой комнате, после успешного присоединения к этой комнате мне нужно отправить некоторый JSON в эту комнату и дождаться подтверждения.
var manager = SocketManager(socketURL: URL(строка: myURL)!, конфигурация: [ .log(true), .compress ])
let socket = manager.defaultSocket
socket.on(clientEvent: .connect){(data,ack) in
print("connected")
socket.emit("test", "Hi Server!")
}
И слушатель,
socket.on("testresult") { [weak self] (data,ack) in
print(data)
print(data.description)
}
socket.connect()
Согласно команде сервера, мне нужно присоединиться к комнате, передав строковое значение (join_id). И как только я получил успешное подтверждение, мне нужно отправить JSON и дождаться подтверждения подтверждения получения данных.
Ответ №1:
Присоединитесь к конкретному помещению, нажмите на передачу данных
self.socketIOClient.emit("join_id", with: "154") /*Like Random id generate*/
let jsonDic = ["room":driver_id,"userId":"(userID)",
"quoteId":quote_id,"isRequest":"1"] /* Json Data send to server */
self.socketIOClient.emit("sendRequestToDriver",jsonDic)
Получить ответ в формате json
let manager:SocketManager!
let socketIOClient: SocketIOClient!
manager = SocketManager(socketURL: URL(string: ServerAPI.SocketURL)!,
config: [.log(true), .compress])
socketIOClient = manager.defaultSocket
self.socketIOClient?.on("orderRequestUpdateByDriver") { ( dataArray, ack) -> Void in
let dict = dataArray[0] as? NSDictionary ?? [:]
Print(dict)
}
socketIOClient.on(clientEvent: .error) { (data, eck) in
print(data)
print("socket error")
}
socketIOClient.on(clientEvent: .disconnect) { (data, eck) in
print(data)
print("socket disconnect")
}
socketIOClient.on(clientEvent: SocketClientEvent.reconnect) { (data, eck) in
print(data)
print("socket reconnect")
}
socketIOClient.connect()