2011-02-09 50 views
0

是否可以使用socket.io-node將數據發送給選定的用戶組?例如,我如何實現與不同房間聊天?我不想讓.broadcast()向所有登錄用戶發送數據。僅使用Socket.io-node向選定用戶發送數據

+0

http://stackoverflow.com/questions/4445883/node-websocket-server-possible-to-have-multiple-separate-broadcasts-for-a-sin – 2011-02-16 06:06:42

回答

3

通常情況下,您應該爲每個房間提供一個已連接用戶的列表,並且這些用戶都有一個應該存儲在某個地方的client對象。因此,當您想要將消息發送到特定房間時,您只需遍歷該房間的連接用戶並訪問其對象併發送數據。

簡而言之,您可能需要將您的數據逐個發送給組中的每個用戶。

1

socket.io內置了

在插座對象的單個連接的分組功能,比如你獲得通過時,一個新的用戶連接,你可以調用。加入(「ROOMNAME」)其中ROOMNAME是任何要用於識別「房間」的字符串,您可以使用房間名稱(如「個人資料/ 14」)來創建用於更新用戶#14個人資料的頻道。

然後,主IO對象在做這樣的事情:

io.sockets.in('profile/14').emit('newComment', {message:'hello'}); 

消息將走出去已經。加入所有連接()倒是給定的房間。

通常我會讓我的客戶端發出一個「hello」事件onConnect,它標識客戶端感興趣訂閱的內容,然後在服務器端,我的「hello」事件處理程序處理.join()'讓客戶進入任何需要的房間