如何删除io.on('connection')监听器?

tha*_*rd2 3 node.js socket.io

我有一些socket.io服务器的代码:

var io = require("socket.io");
io = io(server);
io.on('connection', connectionHandler);
Run Code Online (Sandbox Code Playgroud)

一切都很好.我想知道如何删除该连接侦听器 - 不像套接字,它似乎

io.removeListener('connection', connectionHandler);
Run Code Online (Sandbox Code Playgroud)

不起作用(我得到"io.removeListener不是一个函数").如何在('连接')侦听器上删除它?

如果重要的话,我正在开发一个socket.io房间管理库,我正在写一个重置功能.我正在使用测试套件与Mocha之间的重置功能.我想重置函数来删除on连接侦听器.

Socket.io版本是1.3.7

jfr*_*d00 5

如果你是通过怎样socket.io流程工作.on(),一个可以计算出,它的使用默认的顶级命名空间为EventEmitterio.on()刚刚转发函数调用到顶级命名空间对象.因此,您可以获取顶级命名空间对象,然后只需调用EventEmitter它上面的任何方法,如下所示:

var nsp = io.of('/');
nsp.removeListener('connection', connectionHandler);
Run Code Online (Sandbox Code Playgroud)

我已经验证这可以在我自己的测试应用程序中工作,并在调试器中逐步执行它以验证它是否按预期工作.