【问题标题】:How to remove io.on('connection') listener?如何删除 io.on('connection') 监听器?
【发布时间】:2016-01-23 03:19:33
【问题描述】:

我有一些用于 socket.io 服务器的代码,如下所示:

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

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

io.removeListener('connection', connectionHandler);

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

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

Socket.io 版本为 1.3.7

【问题讨论】:

标签: node.js socket.io


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2014-08-07
    • 2014-02-17
    • 2019-02-05
    • 2013-06-18
    • 1970-01-01
    • 2021-01-11
    • 2019-01-30
    • 2015-02-27
    • 1970-01-01
    相关资源
    最近更新 更多