【问题标题】:Is it possible to swap out the Node.js net socket data event listener?是否可以换出 Node.js 网络套接字数据事件侦听器?
【发布时间】:2023-03-17 13:56:01
【问题描述】:

我正在使用 Node.js net 包连接到 Telnet 服务器并与之通信。我正在使用net.createConnection() 创建和初始化一个套接字;然后执行以下操作来绑定初始数据事件侦听器:

client.on('data', (data) => { this.handleFoo(data) });

我认为将不同的功能封装在不同的回调中可能是个好主意;一种用于处理协商连接、登录等。一种用于通用通信。

我尝试再次简单地调用.on(),看看是否可以将事件侦听器回调替换为没有所有连接/登录代码的东西:

client.on('data', (data) => { this.handleBar(data) });

不幸的是,这没有任何效果,并且再次调用了原始回调。这可能吗?

我找不到另一个可以取消注册第一个侦听器回调的套接字方法。

谢谢。

【问题讨论】:

    标签: javascript node.js sockets callback


    【解决方案1】:

    您需要一个命名函数。使用自 Node.js v10.0.0 起可用的 client.removeListener()client.off()。这些可用于net.Socket,因为它扩展了EventEmitter

    const fooHandler = (data) => { this.handleFoo(data) };
    
    client.on('data', fooHandler);
    ...
    client.off('data', fooHandler);
    

    【讨论】:

    • 谢谢帕特里克!回家后我会试一试,如果可行,我会将您的答案标记为正确:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    • 2021-08-17
    • 2012-10-23
    • 2021-12-03
    相关资源
    最近更新 更多