2011-02-09 12 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 –

答えて

3

通常、各部屋に接続されたユーザーのリストがあり、それらのユーザーにはすべて、clientというオブジェクトがあり、どこかに格納しておく必要があります。したがって、特定の部屋にメッセージを送信する場合は、その部屋の接続されているユーザーを繰り返し処理し、clientオブジェクトにアクセスしてデータを送信するだけです。

要するに、グループ内の各ユーザーにデータを1つずつ送信するだけで済みます。あなたは、新しいユーザーが接続したときにroomNameが任意のある場合、あなたは(「roomName」).join呼び出すことができます渡されるよう

1

socket.ioは、単一の接続のためのソケットオブジェクトで

に建てられたグループ化機能を備えていますあなたが "部屋"を識別するために使用したいと思う文字列であれば、 "プロフィール/ 14"のような部屋の名前を使って、ユーザー#14のプロフィールへの更新のためのチャンネルを作ることができます。 ()メッセージが.joinしているすべての接続に出かけます

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

与えられた部屋をD ':

は次にメインIOオブジェクト上のような何かをします。

通常、私はクライアントが "hello"イベントを発行して、クライアントが購読に興味のあるコンテンツを特定し、次にサーバー側で "hello"イベントのハンドラが.join()を処理するようにします。どんな部屋にでもクライアントを入れてください。

関連する問題