Socket io。 禁止自动join由套接字ID标识的房间

在文档中说:“Socket.IO中的每个Socket都由一个随机的,不可测的唯一标识符Socket#id来标识。为了方便起见,每个套接字自动join由这个id标识的一个房间。

我想知道是否有一个选项来禁用此function。 我的解决scheme是:

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