当前位置:首页 > JavaScript

js实现tcp客户端

2026-04-04 22:16:22JavaScript

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
适用于需要更高级功能的场景:

js实现tcp客户端

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);
});

注意事项

  1. 跨域限制:浏览器中 WebSocket 需服务端支持 CORS
  2. 二进制数据:TCP 通信可能需要处理二进制数据流
  3. 重连机制:建议添加自动重连逻辑
  4. 心跳检测:长连接需维护心跳包

完整示例(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);

标签: 客户端js
分享给朋友:

相关文章

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js 实现拖拽

js 实现拖拽

实现拖拽的基本步骤 在JavaScript中实现拖拽功能需要监听几个关键事件:mousedown、mousemove和mouseup。以下是实现的基本逻辑。 监听目标元素的mousedown事件,记…

js实现图片放大

js实现图片放大

使用 CSS transform 实现图片放大 通过 CSS 的 transform: scale() 属性实现图片放大效果。当鼠标悬停时,图片会平滑放大。 const img = document…

js 实现递归

js 实现递归

递归的基本概念 递归是指函数直接或间接调用自身的过程。在JavaScript中,递归通常用于解决可以分解为相似子问题的问题,如阶乘、斐波那契数列、树形结构遍历等。 递归的实现要点 基线条件(Base…