Swift 5: интеграция ввода-вывода сокета и отправка данных

#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()