2012-07-13 166 views
2

我可以愉快地將消息從服​​務器發送到客戶機,也可以從客戶機發送到服務器。然而,我似乎需要發送(廣播)消息到服務器本身的(服務器)插座 - 我不知道該怎麼去做。socket.io:從服務器向服務器發送消息(!)

這種情況是服務器學習(通過Redis訂閱)可能非常多客戶端的一個子集需要發送消息。每個服務器端套接字可以自行確定是否需要觸發。我只是不知道如何讓他們知道他們必須進行檢查(可能與客戶(?)發出的消息中的'通常'相同)。

FWIW可以通過僅使用handshakeData(以及其他非套接字實例特定的服務器端結構)進行檢查。如果有辦法從外部獲得握手數據,這也是一種可能性;但絕不是非常漂亮。

任何想法/指針的人?

+0

你也許可以使用'socket.io-client'模塊連接到本地主機。 – 2012-07-13 16:45:21

回答

0

我似乎已經得到它(通過調試socket.io代碼)。

在消息處理程序中獲取有問題的套接字,並設置帶有事件和其他屬性(通常是具有附加信息的'數據'對象)的'params'數組。有了這兩個電話socket.$emit.apply(socket, params)

在實際代碼:

for (var socketId in io.namespaces['/mynamespace'].sockets) { 
    var socket = io.namespaces['/mynamespace'].sockets[socketId]; 
    var params = ['test event', {'foo': 'bar'}]; 
    socket.$emit.apply(socket, params); 
} 
+0

這可能不適用於羣集環境。 – eyko 2012-12-02 01:03:24

相關問題