socket.io(node.js)のserver -> clienetの送信まとめ
2014年1月23日
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になります。