2012-02-04 82 views
4

請檢查下面的服務器端代碼。假設某個瞬間data.id爲abc77,那麼無論是否引發socket.io事件,每個連接的瀏覽器都將收到套接字消息「my_model/abc77:update」,還是僅接收到訂閱了此特定消息的套接字消息,或者不?是否僅向訂戶廣播socket.io?

爲了澄清,使用實際應用程序:即使他的應用程序的實例沒有訂閱,黑客能否使用瀏覽器的開發人員控制檯接收消息「my_model/abc77:update」,不知道該消息data.id是abc77?

var io = require('socket.io'); 
io.listen (server).sockets.on ('connection', function (socket) { 

    socket.on('my_model:update', function(data, callback) { 

     database.save(data, function(err){ 
      if (!err) { 
       callback(data); 
       socket.broadcast.emit('my_model/'+data.id+':update'); 
      } 
     }); 

    }); 
}); 

回答

1

它被廣播到連接的每個其他套接字。要將廣播限制到某組套接字,請使用rooms