js 实现 tcp
TCP 通信的 JavaScript 实现方法
在 JavaScript 中实现 TCP 通信通常需要使用 Node.js 环境,因为浏览器端的 JavaScript 受安全限制无法直接建立 TCP 连接。以下是几种实现方式:
使用 Node.js 的 net 模块
Node.js 内置的 net 模块可以创建 TCP 服务器和客户端。
TCP 服务器示例代码
const net = require('net');
const server = net.createServer((socket) => {
console.log('客户端已连接');
socket.on('data', (data) => {
console.log(`收到数据: ${data}`);
socket.write(`ECHO: ${data}`);
});
socket.on('end', () => {
console.log('客户端断开连接');
});
});
server.listen(8080, () => {
console.log('服务器启动在 8080 端口');
});
TCP 客户端示例代码
const net = require('net');
const client = net.connect({ port: 8080 }, () => {
console.log('已连接到服务器');
client.write('Hello Server!');
});
client.on('data', (data) => {
console.log(`收到回复: ${data}`);
client.end();
});
client.on('end', () => {
console.log('已断开与服务器的连接');
});
使用 WebSocket 作为替代方案
如果需要在浏览器环境中实现类 TCP 的双向通信,WebSocket 是最接近的替代方案。

浏览器端 WebSocket 示例
const socket = new WebSocket('ws://example.com/socket');
socket.onopen = () => {
socket.send('Hello Server!');
};
socket.onmessage = (event) => {
console.log(`收到消息: ${event.data}`);
};
使用 Socket.io 库
Socket.io 提供了更高级的抽象,支持自动重连和多种传输方式。
服务器端

const io = require('socket.io')(3000);
io.on('connection', (socket) => {
console.log('新客户端连接');
socket.on('message', (data) => {
console.log(`收到: ${data}`);
socket.emit('reply', `ECHO: ${data}`);
});
});
客户端
const socket = io('http://localhost:3000');
socket.emit('message', 'Hello!');
socket.on('reply', (data) => {
console.log(`服务器回复: ${data}`);
});
使用 WebRTC 数据通道
对于点对点通信需求,WebRTC 的 DataChannel 可以提供类似 TCP 的可靠传输。
建立数据通道示例
const pc = new RTCPeerConnection();
const dc = pc.createDataChannel('channel');
dc.onmessage = (event) => {
console.log(`收到: ${event.data}`);
};
dc.onopen = () => {
dc.send('Hello Peer!');
};
注意事项
- Node.js 的
net模块仅适用于服务器端 TCP 通信 - 浏览器环境必须使用 WebSocket 或 WebRTC 等高级协议
- TCP 是面向流的协议,可能需要自定义消息边界处理
- 生产环境应考虑添加错误处理和超时机制






