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

时间:2015-10-23 14:29:24

标签: node.js socket.io

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

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

这一切都很棒。我想知道如何删除该连接侦听器 - 与socket不同,它似乎是

io.removeListener('connection', connectionHandler);

不起作用(我得到“io.removeListener不是函数”)。如何删除on('connection')侦听器?

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

Socket.io版本是1.3.7

1 个答案:

答案 0 :(得分:5)

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

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

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