基本的にサーバーサイドの話。
(クライアントサイドでは、通信相手はサーバーしかいないので、socket.emitしか使用しないはず)
emitはsendに置き換え可能?(その場合、第1引数は不要)
| 送信相手 | 使用する関数 | 備考 |
|---|---|---|
| クライアントに対して送信 | socket.emit(event,message); | 自動的にシリアライズ(JSON.stringify()) される(オーバーヘッドがかかる) |
| socket.json.emit(event,message); | JSON形式であることを明示 | |
| 特定のユーザーに対して送信 (socketsは省略可?) |
io.sockets.to(socket.id).emit(event,message); | |
| io.to(socket.id).emit(event,message); | ||
| 自分を含む全員にブロードキャスト | io.sockets.emit(event,message); | |
| io.emit(event,message); | ||
| 自分以外の全員にブロードキャスト | socket.broadcast.emit(event,message); | 自動的にシリアライズ(JSON.stringify()) される(オーバーヘッドがかかる) |
| socket.json.broadcast.emit(event,message); | JSON形式であることを明示 | |
| ルーム内の自分を含む全員にブロードキャスト (socketsは省略可?) |
io.sockets.to(roomID).emit(event,message); | |
| io.sockets.in(roomID).emit(event,message); | ||
| ルーム内の自分以外の全員にブロードキャスト | socket.broadcast.to(roomID).emit(event,message); | |
| ルーム内の特定のユーザーに送信 | ----- | ソケットIDがわかるはずなので、特定のユーザーに対して送信する場合と同じでよいはず |