Node.js EventEmitter 写tcp client服务代码
时间: 2024-12-19 13:28:44 浏览: 5
Node.js 的 `EventEmitter` 是一个强大的工具,它允许你在 JavaScript 中创建事件驱动的系统。当你想要编写 TCP 客户端服务时,可以利用这个特性来管理连接状态、数据接收和发送等操作。
以下是一个简单的 TCP 客户端示例,使用 `net` 模块创建一个 EventEmitter 实例,并监听 `'connect'` 和 `'data'` 事件:
```javascript
const net = require('net');
class TcpClient {
constructor(host, port) {
this.client = net.connect({ host, port });
this.client.on('connect', () => {
console.log('Connected to server');
this.client.setEncoding('utf8'); // 设置数据解析为文本
this.client.on('data', (data) => {
console.log(`Received data: ${data}`);
this.emit('receivedData', data); // 发出 'receivedData' 事件
});
});
this.client.on('error', (error) => {
console.error('Error occurred:', error);
this.disconnect();
});
this.client.on('close', () => {
console.log('Connection closed');
});
this.on('sendRequest', (message) => {
this.client.write(message);
});
}
disconnect() {
this.client.destroy();
}
}
// 使用示例
const client = new TcpClient('localhost', 12345);
client.on('receivedData', (data) => {
// 处理接收到的数据
});
client.sendRequest('Hello Server!');
```
在这个例子中,`TcpClient` 类就是一个 Event Emitter,你可以通过 `.on` 方法添加事件处理器,如 `'sendRequest'`,然后触发 `'receivedData'` 等事件。当连接关闭时,会自动触发 `'close'` 事件。
阅读全文