【Node.js从基础到高级运用】Node.js中实现全双工通信
在Node.js中,全双工通信通常是通过流(Stream)来实现的。以下是一个简单的例子,展示如何使用stream
模块中的Duplex
类来创建一个全双工流,并在服务器和客户端之间进行通信。
服务器端代码(server.js):
const net = require('net');
const { Duplex } = require('stream');
class MyDuplex extends Duplex {
_read() {
// 客户端读取数据时调用
}
_write(chunk, encoding, callback) {
// 服务器端写入数据时调用
console.log(chunk.toString());
callback();
}
}
const server = net.createServer((socket) => {
const duplex = new MyDuplex();
duplex.pipe(socket);
socket.pipe(duplex);
});
server.listen(8080, () => {
console.log('Server is listening on port 8080');
});
客户端代码(client.js):
const net = require('net');
const { Duplex } = require('stream');
const client = net.createConnection({ port: 8080 }, () => {
console.log('Client connected');
const duplex = new Duplex({
read(size) {},
write(chunk, encoding, callback) {
client.write(chunk, encoding, callback);
},
});
client.pipe(duplex);
duplex.pipe(client);
// 发送数据到服务器
duplex.write('Hello server!\n');
});
client.on('data', (data) => {
console.log(data.toString());
});
client.on('close', () => {
console.log('Connection closed');
});
在这个例子中,服务器端创建了一个net.Server
实例,并在连接建立时创建了一个自定义的Duplex
流。然后,它将这个流与客户端的套接字相连,实现了全双工通信。客户端代码也类似,它创建了一个套接字连接到服务器,并使用Duplex
流与服务器端进行通信。
评论已关闭