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

How to remove io.on('connection') listener?

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

var io = require("socket.io");
io = io(server);
io.on('connection', connectionHandler);

这一切都很好。我想知道如何删除该连接侦听器 - 与套接字不同,看起来

io.removeListener('connection', connectionHandler);

不起作用(我得到 "io.removeListener is not a function")。如何删除 on('connection') 侦听器?

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

Socket.io 版本为 1.3.7

如果您了解 socket.io 如何处理 .on(),可以发现它使用默认的顶级名称空间作为 EventEmitterio.on() 只是转发对顶级命名空间对象的函数调用。因此,您可以获得顶级命名空间对象,然后像这样调用任何 EventEmitter 方法:

var nsp = io.of('/');
nsp.removeListener('connection', connectionHandler);

我已经验证这在我自己的测试应用程序中有效,并在调试器中逐步检查它以验证它是否按预期工作。