我正在使用 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);