2016-05-28 6 views
1

docsでは、「Socket.IOの各Socketは、ランダムで見分けがつかない一意の識別子Socket#idで識別されます。このid。 "ソケットio。ソケットのIDで識別される部屋に自動接続することを無効にする

このような機能を無効にするオプションがあるのでしょうか。 私のソリューションでした:socket.ioで

io.on('connection', function (socket) { 
    leaveDefRoom(socket); 
[...] 
} 

function leaveDefRoom(socket){ 
    var room = socket.adapter.rooms; 
    for (var key in room){ 
     if (key.charAt(0) == '/') { 
      socket.leave(key); 
      return; 
     } 
    } 
} 

答えて

2

。たびにemitイベント。 socket.ioは、この部屋のクライアントにイベントを送信します。あなたが部屋からユーザーを削除すると、このユーザーメッセージを送信することはできません。放送しても動作しません。とにかく

、あなたが本当にしたい場合は、あなたが他の部屋と同じように、この部屋を残すことができます:

あなたはsocket.jsファイルを変更すると、このオプションを無効にすることができます

https://github.com/socketio/socket.io/blob/master/lib/socket.js#L289

Socket.prototype.onconnect = function(){ 
    debug('socket connected - writing packet'); 
    this.nsp.connected[this.id] = this; 
    // You have to remove this line below: 
    this.join(this.id); 
    this.packet({ type: parser.CONNECT }); 
}; 
関連する問題