socket.io(node.js)のserver -> clienetの送信まとめ

roomを使わない場合

io.sockets.on('connection', function (socket) {

  // 本人
  socket.emit('msg','Hello!');

  // 他人へ(自分以外)
  socket.broadcast.emit('msg','Hello!!');

  // 全員(自分も含め)
  io.sockets.emit('msg','Hello!!');

  // 特定の誰か
  // var socket_id = socket.id;
  io.sockets.socket( socket_id ).emit('msg','Hello!!' ); 
});

特定の人に送る(それは自分かもしれないし、他人かもしれない)場合は、事前にsocket.idを保存しておく必要があります。

roomを使う場合

io.sockets.on('connection', function (socket) {

    // room1に入る
    socket.join('room1');

    // room1にいる本人
    socket.to('room1').emit('msg','Hello!!');

    // room1にいる他人(自分以外)
    socket.broadcast.to('room1').emit('msg','Hello!!');

    // room1にいる全員
    io.sockets.in('room1').emit('msg','Hello!!');

    // 特定の誰か
    io.sockets.socket( socket_id ).emit('msg','Hello!!' );
});

特定の誰かに送る場合は、roomを使わない場合と同じです。
socket.idは、接続するroom毎に変わるので、room1とroom2にjoinした場合、同じ人であっても、それは別のsocket.idになります。

返信を残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください