我有一些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
答案 0 :(得分:5)
如果您了解了socket.io如何处理.on()
,可以发现它使用默认的顶级命名空间作为EventEmitter
和io.on()
只是转发函数调用顶级命名空间对象。因此,您可以获取顶级命名空间对象,然后只需调用任何EventEmitter
方法:
var nsp = io.of('/');
nsp.removeListener('connection', connectionHandler);
我已经验证这可以在我自己的测试应用中运行,并在调试器中逐步完成,以验证它是否按预期工作。