我想實現一個聊天模塊爲我的應用程序並獲得2個問題。的客戶端會自動斷開
第一個是,我在插座的客戶不斷自動斷開。 這是我正在做的。
我的客戶連接到一個動態創建的房間,房間的名稱是我生成的隨機ID。現在,當客戶發送消息時,我打印日誌以查看房間中有多少人和它記錄「2」,在服務器端,其是correct.But當我繼續從客戶端將消息發送到它開始顯示我「1」客戶端連接並在一段時間後它顯示我0客戶端連接在服務器人們會自動斷開爲什麼會發生這種情況?
socket.on('SendChat',function(msgobj){ //pass the message to all people in the room.
console.log("Msg from" + msgobj.MsgSenderName + " in RoomID = "+ msgobj.RoomID);
console.log("People in room " +io.sockets.clients(msgobj.RoomID).length);
socket.broadcast.to(String(msgobj.RoomID)).emit('RecieveChat',msgobj);
});
此事件在服務器端升起時,有人從任何客戶端發送消息和msgobj
將包含RoomID.So你可以看到,我登錄了房間的人數。
第二個問題是我試圖廣播我從客戶端收到的消息。但是在其他客戶端的事件沒有引發。在上面的代碼中,您可以看到我用來向所有人廣播消息的最後一行其他客戶端,但在這些客戶端的事件將不會觸發我不知道why.Here的是什麼我的客戶
this.Socket.on('RecieveChat',function(obj){
self.Controller.RecieveChat(obj);
});
上,這裏是我的日誌
你可以看到RoomID
是相同的,但房間裏的人都會離開,這個快照只顯示1 people in room
之前,有兩個人的房間,然後切到1和0,最終
編輯:
當我改變socket.broadcast.to(String(msgobj.RoomID)).emit('RecieveChat',msgobj);
到socket.broadcast.emit('RecieveChat',msgobj);
它開始工作,但沒有工作,如果我使用room
內發射方法to
。
Transport end (close timeout)
這似乎是導致issue.How解決呢?