socket.io-client
event.js
listeners(name)
removeAllListeners()
removeListener(name, fn)
addListener(name, fn) = on(name, fn)
once(name, fn)
emit()
Room
Roomsを使えばクライアントを切り分けることができる。
server側でjoin/leave
socket.join('room')
socket.leave('room')
disconnect中にleaveする必要はない。自動的に発生して、空のルームは自動的に消滅する。
emitするには2通りの方法がある。broadcast
か in
broadcastするとemitを行ったソケット以外の、指定のルームに属するクライアントに送る。
socket.broadcast.to('room').emit('event_name', data)
ルームを指定しなかったら、emitしたソケット以外の全クライアントに送る
socket.broadcast.emit('event_name', data)
指定のルームに属するクライアントに送る
io.sockets.in('room').emit('event_name', data)
全クライアントに送る
io.sockets.emit('event_name', data)
指定のネームスペースとルームにイベントを送る
io.of('namespace').in('room').emit('event_name', data)
全てのルームを取得
io.sockets.manager.rooms
room name は 先頭に / 文字が付く。内部的に使われるだけなのでjoin/leaveで使う必要はない
ルームに属するクライアントの一覧
io.sockets.clients('room')
ルームに属するクライアントの一覧、ネームスペースも指定する場合
io.of('namespace').clients('room')
あるクライアントが属するルーム一覧
io.sockets.manager.roomClients[socket.id]