经过更多调试后,我注意到socket.io Manager对象中的以下配置:
blacklist : ['disconnect']
这导致namespace.js中的该分支无法处理事件:
case 'event': // check if the emitted event is not blacklisted if (-~manager.get('blacklist').indexOf(packet.name)) { this.log.debug('ignoring blacklisted event `' + packet.name + '`'); } else { var params = [packet.name].concat(packet.args); if (dataAck) { params.push(ack); } socket.$emit.apply(socket, params);}此拉取请求https://github.com/LearnBoost/socket.io/pull/569中详细介绍了更改。我了解XHR为何要这样做,因为任何人都可以发送带有随机会话ID的HTTP请求,以尝试断开其他用户与服务器的连接。
相反,我打算做的是检查每个新连接中服务器中现有的会话ID,并确保在继续连接逻辑之前运行我的断开逻辑。



