当前位置: 首页 > news >正文

前端实现socket 中断重连

前端代码

  let ws;
    let reconnectAttempts = 0;
    const maxReconnectAttempts = 5;
    let reconnectTimer = null;

    // 初始化连接
    function connect() {
      ws = new WebSocket('ws://localhost:3001');

      ws.onopen = () => {
        console.log('✅ 连接成功');
        reconnectAttempts = 0; // 重置重连计数器
        document.body.style.backgroundColor = '#cfc';
      };

      ws.onmessage = (event) => {
        document.getElementById('messages').innerHTML += `<p>${event.data}</p>`;
      };

      ws.onerror = (error) => {
        console.error('💥 连接错误:', error);
        document.body.style.backgroundColor = '#fcc';
      };

      ws.onclose = (event) => {
        console.log('🔌 连接关闭');
        if (reconnectAttempts < maxReconnectAttempts) {
          const delay = Math.min(1000 * Math.pow(2, reconnectAttempts), 30000);
          console.log(`⏳ ${delay/1000}秒后尝试重连...`);
          reconnectTimer = setTimeout(connect, delay);
          reconnectAttempts++;
        }
      };
    }

    // 手动重连
    function manualReconnect() {
      if (reconnectTimer) clearTimeout(reconnectTimer);
      reconnectAttempts = 0;
      connect();
    }

    // 首次连接
    connect();

node模拟处理

// server.js
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 3001 });

wss.on('connection', (ws) => {
  console.log('✅ 客户端已连接');

  // 定时推送消息
  const interval = setInterval(() => {
    if (ws.readyState === WebSocket.OPEN) {
      ws.send(`服务端消息 ${new Date().toISOString()}`);
    }
  }, 2000);

  // 断开处理
  ws.on('close', () => {
    console.log('❌ 客户端断开'+new Date().toISOString());
    clearInterval(interval);
  });
});

console.log('🚀 服务端运行在: ws://localhost:3001');

相关文章:

  • Deepin(Linux)设置开机自动启动 MySQL
  • 智能测试执行 利用算法 利用图像识别、自然语言处理等技术实现自动化测试执行
  • C#上位机--跳转语句
  • SOME/IP--协议英文原文讲解11
  • 蓝桥杯备考:递归初阶之汉诺塔问题
  • 使用Docker部署SearXNG
  • 设计模式| 观察者模式 Observer Pattern详解
  • vue3 Props的使用
  • 1-19 .gitignore的作用
  • PAT 甲级 1091 Acute Stroke
  • 网络安全监测探针安装位置 网络安全监测系统
  • ZLMediaKi集群设置
  • Python部署工控安全风险评估系统
  • 字节火山引擎 DeepSeek 接入本地使用
  • mongodb的并发优化
  • 网络安全风险事件排名 网络安全事件划分
  • MobaXterm_Portable_v23.2 免费下载与使用教程(附安卓替代方案)
  • 模型思维 - 领域模型的应用与解析
  • 8.日常英语笔记
  • 【每日八股】MySQL篇(二):事务
  • 中企动力做的网站经常打不开/厦门网
  • seo联盟怎么赚钱/新网seo关键词优化教程
  • 自己服务器建网站/seo优化推广多少钱
  • 做旅游的网站的要素/最简单的网页制作
  • 个人网站样式/seo门户网价格是多少钱
  • 用html做的零食网站/网站优化排名易下拉霸屏