是否可以换出 Node.js 网络套接字数据事件侦听器?



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

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

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

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

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

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

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

谢谢。

你需要一个命名函数。使用自 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);

最新更新