4

以下のサーバー側コードを調べてください。ある時点で data.id が abc77 であると仮定すると、socket.io イベントが発生したかどうかに関係なく、接続されているすべてのブラウザーがソケット メッセージ 'my_model/abc77:update' を受け取るか、この特定のメッセージにサブスクライブしたブラウザーのみを受け取りますか?いいえ?

明確にするために、実用的なアプリケーションを使用して: ハッカーは、アプリケーションのインスタンスにサブスクリプションがない場合でも、ブラウザの開発者コンソールを使用して「my_model/abc77:update」というメッセージを受信できますか? 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');
            }
        });

    });
});
4

1 に答える 1

1

接続されている他のすべてのソケットにブロードキャストされます。ブロードキャストを特定のソケット グループに制限するには、roomsを使用します。

于 2012-02-04T02:16:23.463 に答える