Socket.io вещает только для подписчиков? - PullRequest
4 голосов
/ 04 февраля 2012

Пожалуйста, проверьте код на стороне сервера ниже.Предполагая, что data.id в какой-то момент является abc77, каждый подключенный браузер получит сообщение сокета «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 Ответ

1 голос
/ 04 февраля 2012

Он транслируется на все остальные подключенные розетки.Чтобы ограничить трансляцию определенной группой сокетов, используйте rooms .

...