2013-01-23 110 views
0

我想實現一個聊天模塊爲我的應用程序並獲得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); 
}); 

上,這裏是我的日誌

enter image description here 你可以看到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解決呢?

回答

0

終於找到了解決方案here的問題是與socket.io的版本,我用。