我無法發出事件到房間在我的服務器應用程序,使用版本1.4.5Socket.io 1.4.5房間發出
我嘗試這兩種方式在一個房間裏進行溝通,但沒有奏效。
this.io.to(this.id).emit(eventName,data);
this.io.sockets.in(this.id).emit(eventName,data);
之前調用此,我註冊用戶在房間以這種方式
user.socket.join(this.id);
進一步細節
的
this.io
目的是require('socket.io')(http);
的
user.socket
對象是io.on('connection', function(socket)
我省略了代碼的其餘部分,因爲它是在過度複雜的結構和繼承鏈,並且還irellevant到這個問題。
我不一定需要一段代碼來複制,而是一種如何調試和解決問題的方法。
編輯
當我停下此刻的應用程序時,我想發出訊息,當我檢查io
對象,我得到以下。
io -> nsps -> '/' -> adapter -> rooms -> theRoomName -> sockets
我的插座ID 是列出。
有沒有辦法找出消息是否真的被髮送?
編輯#2
當我檢查插座對象,位於
io -> sockets -> sockets -> "socket id" -> rooms
房間ID 是目前有作爲
要確認的前四件事是:1)this.io的價值是什麼,它應該是什麼。 2)'this.id'的價值是什麼,它應該是什麼。 3)什麼是'eventName'? 4)客戶端是否真的在偵聽'eventName'消息? – jfriend00
您可以追蹤服務器上調試器中的'.emit()'函數調用,看看它是否認爲它應該實際發送消息並查看它的功能。您可以在服務器上使用網絡跟蹤(如WireShark或Ethereral)以查看它是否實際發送任何內容。您可以使用Chrome調試器中的「網絡」選項卡查看消息是否到達客戶端。 – jfriend00
非常感謝您關注此事。所有這些變量都被正確設置了,我在發佈之前確定了。這是它的第四個步驟。在客戶重構期間,我忘記爲該事件附加一個監聽器。再次感謝大家,如果你能夠創建一個答案,我會很樂意接受它 – Slytherin