2015-03-19 6 views
0

Почему я вижу трафик для других комнат (хром/сеть).socket.io трафик для других комнат

Node.js и Socket.io 0.9.16

Упрощенная настройка

//sockets-server 
socket.on('subscribeToSome', function (data) { 
    joinToRoom(socket, data); 
    console.log("joining" + data.room); 
}); 

//client 
socket.emit(subscribeToSome, {room: room, data: dataToSubscribe}); 
    socket.on(room, function(data){ 
    console.log(data); 
}); 


//route -server 
global.io.sockets.emit("room1", {aa:"ads"} 

Все работает, но я могу видеть трафик для других комнат в (хром/сеть), даже лань в не ее члена , (данные не видны в обратном вызове только в сети/веб-узлах)

Почему? И как это решить.

Спасибо. // Karl

ответ

0

Из того, что я вижу из вашего кода, вы не отправляете свое сообщение в комнату, но вы используете имя события для сообщения. Как показано в documentation, emit берет строку в качестве первого параметра, предоставляя этому сообщению имя, к которому подключены ваши обратные вызовы.

излучающие в комнате будет выглядеть следующим образом:

global.io.sockets.to("room1").emit("message", {aa:"ads"} 

Вы также должны присоединиться к Вашей розетке в комнате для того, чтобы получить соответствующие сообщения.

См. http://socket.io/docs/rooms-and-namespaces/ для получения дополнительной информации по этой теме.

+0

ah, ok можно создать динамический прослушиватель событий. (например, обратный вызов, как указано выше). – Karl

+0

hmm, похоже, я просто мог использовать. to ("room1"). emit ("room1", {aa: "ads"}); – Karl

Смежные вопросы