ユーザーは一度に1つの部屋にいることを保証したいと思いますが、私はこの問題を抱えています。私はソケットが、現在ではすべての部屋のリストを取得することができないまで問題を煮ているsocket.io:ソケットに1つの部屋しかありません
私の現在の戦略は、このような何かを行うことです:。
io.on('connection', function(socket) {
console.log('A user just connected with id ' + socket.id);
socket.on("change room", function(data) {
// this SHOULD return a list of all rooms this user is in
var socketsRooms = socket.rooms;
console.log(socket.rooms) //{ '/#3tE4Up5PRbTfsU0JAAAD': '/#3tE4Up5PRbTfsU0JAAAD' }
console.log(typeof socket.rooms) // object
// Loop through the rooms and leave them
for (var room in socketsRooms) {
console.log('LEAVING ROOM: ', room);
socket.leave(room);
}
// Join the new room
socket.join(data.newroom);
});
socket.on('disconnect', function() {
console.log('user ' + socket.id + ' disconnected');
});
})
がで問題がありますsocket.roomsのドキュメント?それは、ソケットが接続されている部屋の配列を返す必要がありますが、私はidオブジェクトとしてデータを取得します。 EX: { '/#3tE4Up5PRbTfsU0JAAAD': '/#3tE4Up5PRbTfsU0JAAAD' }
...私はSocket.io github pageオン['issues']
のようなものを期待する私の場合socket.roomsの説明は、次のように述べています
このソケットがある部屋を特定する文字列のハッシュ、 ルーム名でインデックスされています。私はすでにfolowing質問をチェックアウトした
:
重複としてマークする前に
- How to leave all rooms that the socket is connected to at one go in Node.js
- socket.io: assure socket joins only one room at a time
が最初の質問への答えはと思われます私はかなりそれがbecausを動作すると確信していますeは、私たち自身のリストを保持していると仮定していますが、socket.ioをそのメソッドに対して使用している作業用ソリューションを好むでしょう。
私は