Bir kullanıcının bir seferde sadece bir odada olduğunu garanti etmek isterim, ama bunu iltifat etmekte zorlanıyorum. Bir yuva şu anda tüm odaların listesini almak mümkün değil aşağı sorunu haşlanmış olansocket.io: sokete sadece bir oda
Benim şimdiki strateji böyle bir şey yapmaktır.
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');
});
})
bir sorun var mı socket.rooms ile dokümanlar? Bir soketin bağlı olduğu bir dizi odaya dönmesi gerektiğini söylüyor, ancak verileri bir id nesnesi olarak geri alıyorum.
EX: { '/#3tE4Up5PRbTfsU0JAAAD': '/#3tE4Up5PRbTfsU0JAAAD' }
... Ben Socket.io github page günü ['issues']
gibi bir şey beklenebilir Benim durumumda socket.rooms açıklama şöyle demiştir:
bu soket olan odalar tanımlayan dizeleri bir karma içinde, oda adı ile endekslenmiştir. Zaten folowing soruları kontrol ettikten
:
yinelenen olarak işaretlediğiniz ÖNCE
- 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
ilk sorunun cevabı görünüyor en çok birlikte çözümlenmiş haldeyken becaus çalışacağından oldukça eminim e kendi çözümümüzü koruduğunu varsayar, ancak bu yöntem üzerinde socket.io kullanarak çalışan bir çözümü tercih ederim.
Ben