当前位置:首页 > 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实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(f…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…

js实现路由

js实现路由

js实现路由的方法 在JavaScript中实现路由功能可以通过多种方式完成,以下是几种常见的方法: 使用原生JavaScript实现路由 通过监听window.onhashchange事件来实现基…

js实现滑动

js实现滑动

实现滑动效果的方法 在JavaScript中实现滑动效果可以通过多种方式完成,以下是几种常见的实现方法: 使用CSS过渡和JavaScript触发 通过CSS定义过渡效果,JavaScript控制触…