Node.js Net Socket长连接
在Node.js中,我们可以使用net
模块来创建TCP或UNIX Socket服务器和客户端。Socket是一种网络通信协议,它允许计算机之间通过网络进行数据传输。而长连接是指在一次连接中可以连续发送和接收多个数据包的通信方式。
创建Socket服务器
要创建一个Socket服务器,我们可以使用net.createServer()
方法。下面是一个简单的示例代码:
const net = require('net');
const server = net.createServer((socket) => {
console.log('Client connected');
socket.on('data', (data) => {
console.log(`Received data: ${data}`);
socket.write('Hello from server!');
});
socket.on('end', () => {
console.log('Client disconnected');
});
});
const PORT = 3000;
server.listen(PORT, () => {
console.log(`Server listening on port ${PORT}`);
});
在上面的代码中,我们使用net.createServer()
方法创建了一个Socket服务器。当客户端连接到服务器时,createServer()
方法会触发一个connection
事件,并传递一个socket
对象作为参数。我们可以通过监听data
事件来接收从客户端发送的数据,并通过write()
方法将数据发送回客户端。当连接关闭时,end
事件会被触发。
创建Socket客户端
要创建一个Socket客户端,我们可以使用net.connect()
方法。下面是一个简单的示例代码:
const net = require('net');
const PORT = 3000;
const client = net.connect(PORT, 'localhost', () => {
console.log('Connected to server');
client.write('Hello from client!');
});
client.on('data', (data) => {
console.log(`Received data: ${data}`);
client.end();
});
client.on('end', () => {
console.log('Disconnected from server');
});
在上面的代码中,我们使用net.connect()
方法创建了一个Socket客户端。当连接成功建立后,connect()
方法会触发一个connect
事件。我们可以通过监听data
事件来接收从服务器发送的数据,并通过end()
方法来关闭连接。
长连接
默认情况下,Socket连接在发送完一次数据后就会关闭。但有时我们需要保持连接并连续发送和接收多个数据包。在Node.js中,我们可以使用setKeepAlive()
方法来启用长连接。下面是一个示例代码:
const net = require('net');
const server = net.createServer((socket) => {
console.log('Client connected');
socket.setKeepAlive(true, 60000); // 60秒内无活动则关闭连接
socket.on('data', (data) => {
console.log(`Received data: ${data}`);
socket.write('Hello from server!');
});
socket.on('end', () => {
console.log('Client disconnected');
});
});
const PORT = 3000;
server.listen(PORT, () => {
console.log(`Server listening on port ${PORT}`);
});
在上面的代码中,我们使用setKeepAlive()
方法启用了长连接,并设置了60秒内无活动时关闭连接。通过使用长连接,我们可以在同一个连接上连续发送和接收多个数据包,提高了网络通信的效率。
总结
本文介绍了如何使用Node.js的net
模块来创建Socket服务器和客户端,并实现了长连接功能。Socket长连接可以在一次连接中连续发送和接收多个数据包,提高了网络通信的效率。希望本文对你理解Node.js中的长连接有所帮助。
const net = require('net');
const server = net.createServer((socket) => {
console.log('Client connected');
socket.on('data', (data) => {
console.log(`Received data: ${data}`);
socket.write('Hello from server!');
});
socket.on('end', () => {
console.log('Client disconnected');
});
});
const PORT = 3000;
server.listen(PORT, () => {
console.log(`Server listening on port ${PORT}`);
});
const net = require('net');
const PORT = 3000;
const client = net.connect(PORT, 'localhost', () => {
console.log('Connected to server');
client.write('Hello from client!');
});
client.on('data', (data) => {
console.log(`Received data: ${data}`);
client.end();
});
client.on('end', () => {
console.log('Disconnected from server');