套接字io。禁用自动加入由套接字 ID 标识的房间



在文档中说:"Socket.IO 中的每个套接字都由一个随机的、不可猜测的、唯一的标识符 Socket#id 标识。为了您的方便,每个插座都会自动加入由此 ID 标识的房间。

我想知道是否有禁用此功能的选项。我的解决方案是:

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;
        }
    }
}

在 socket.io 中。每次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 });
};

最新更新