js实现tcp客户端
TCP 客户端实现基础
在浏览器环境中,JavaScript 无法直接使用原生 TCP Socket(受安全限制),但可通过以下方式实现:
WebSocket 方案
浏览器环境下推荐使用 WebSocket,它是基于 TCP 的封装协议:
const socket = new WebSocket('ws://your-server-address');
socket.onopen = () => {
console.log('Connected');
socket.send('Hello Server');
};
socket.onmessage = (event) => {
console.log('Received:', event.data);
};
socket.onerror = (error) => {
console.error('Error:', error);
};
Node.js 环境实现
在 Node.js 中可直接使用 net 模块创建 TCP 客户端:
const net = require('net');
const client = net.createConnection({ port: 8080, host: 'localhost' });
client.on('connect', () => {
console.log('Connected to server');
client.write('Hello from client');
});
client.on('data', (data) => {
console.log('Received:', data.toString());
});
client.on('end', () => {
console.log('Disconnected');
});
第三方库方案
使用 Socket.IO
适用于需要更高级功能的场景:

const io = require('socket.io-client');
const socket = io('http://your-server-address');
socket.on('connect', () => {
socket.emit('message', 'Custom data');
});
socket.on('response', (data) => {
console.log(data);
});
注意事项
- 跨域限制:浏览器中 WebSocket 需服务端支持 CORS
- 二进制数据:TCP 通信可能需要处理二进制数据流
- 重连机制:建议添加自动重连逻辑
- 心跳检测:长连接需维护心跳包
完整示例(Node.js)
const net = require('net');
class TCPClient {
constructor(host, port) {
this.client = net.createConnection({ host, port });
this.setupEvents();
}
setupEvents() {
this.client.on('ready', () => {
console.log('Connection established');
this.send('Hello');
});
this.client.on('data', (data) => {
console.log('<<', data.toString());
});
this.client.on('error', (err) => {
console.error('Connection error:', err);
});
}
send(message) {
this.client.write(message);
}
}
// 使用示例
const tcpClient = new TCPClient('localhost', 8080);






