Swift не может получить данные от nodejs - PullRequest
0 голосов
/ 19 марта 2019

Здравствуйте, у меня проблема, когда я использую SocketIO в ios, ack всегда false и данные пустые, но в веб-приложении и Android-приложении, работающем со мной, я включил код на стороне сервера и сторону клинтов, как этот код работает?Когда я отправляю идентификатор комнаты включенным сокетом, и я реализовал функцию сокета emit с событием «welcome», чтобы получить данные, спасибо за помощь

2019-03-16 07: 41: 00.447911 + 0200 ALILON Z[21158: 307613] LOG SocketIOClient {/}: событие обработки: понг с данными: []

2019-03-16 07: 41: 00.448000 + 0200 ALILON Z [21158: 307701] LOG SocketEnginePolling: выполнение опросаGET http://realapi.imatcheg.com/socket.io/?transport=polling&b64=1&sid=Us1opxksMNjHH6bpAAAB

2019-03-16 07: 41: 00.448373 + 0200 ALILON Z [21158: 307701] LOG SocketEnginePolling: создана строка POST: 19:42 ["joinRoom", "21"]

2019-03-16 07: 41: 00.448705 + 0200 ALILON Z [21158: 307701] LOG SocketEnginePolling: POSTing

2019-03-16 07: 41: 00.448877 + 0200 ALILON Z [21158:307701] LOG SocketEnginePolling: Выполнение опроса POST http://realapi.imatcheg.com/socket.io/?transport=polling&b64=1&sid=Us1opxksMNjHH6bpAAAB

this is server side /=============================

socket.on("joinRoom",(room) =>{

socket.join(room);

let myJSON = [

{

name: "Banana",

points: 200,

description: "A banana grown in Ecuador."

}

]

socket.emit("welcome",myJSON);

});

socket.on("refresh",(rm)=>{

io.of("/members_chat").emit("get_history");

});

});

And this Client side /===================

let manager = SocketManager( socketURL: URL(string:"http://realapi.imatcheg.com/members_chat")!, config: [.log(true), .forcePolling(true)])

override init() {

super.init()

}

func establishConnection(){

manager.connect()

}

func closeConnection(){

manager.disconnect()

}

func joinTheRoom( room_id : String){

print(room_id)

manager.defaultSocket.emit("joinRoom", room_id )

}

func welcome ( room_id : String){

self.manager.defaultSocket.on("welcome") { (sd, ack) in

print(sd)

print("(ack)")

}

manager.defaultSocket.on(clientEvent: .connect) {data, ack in

print("socket connected")

self.joinTheRoom(room_id : room_id )

}

}
...