如何删除 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()
,可以发现它使用默认的顶级名称空间作为 EventEmitter
和 io.on()
只是转发对顶级命名空间对象的函数调用。因此,您可以获得顶级命名空间对象,然后像这样调用任何 EventEmitter
方法:
var nsp = io.of('/');
nsp.removeListener('connection', connectionHandler);
我已经验证这在我自己的测试应用程序中有效,并在调试器中逐步检查它以验证它是否按预期工作。
我有一些用于 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()
,可以发现它使用默认的顶级名称空间作为 EventEmitter
和 io.on()
只是转发对顶级命名空间对象的函数调用。因此,您可以获得顶级命名空间对象,然后像这样调用任何 EventEmitter
方法:
var nsp = io.of('/');
nsp.removeListener('connection', connectionHandler);
我已经验证这在我自己的测试应用程序中有效,并在调试器中逐步检查它以验证它是否按预期工作。