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

轻松管理 WebSocket 连接!easy-websocket-client

在前端开发中,WebSocket 是实现实时通信的核心技术,但原生 WebSocket 的连接管理(如断连重连、心跳维护、事件监听)往往需要编写大量重复代码。今天给大家分享一个好用的 WebSocket 连接管理库 —— easy-websocket-client,功能都已经封装好,配置一下就好了。

主要功能特性

1. 自动重连机制

reconnectInterval:重连间隔

maxReconnectAttempts:最大重连次数

断连后自动发起重连,达到最大次数后停止尝试

适用于网络不稳定场景,减少手动处理重连的繁琐代码

2. 可定制化心跳

heartbeatMessage:自定义心跳消息内容(支持字符串或对象)

heartbeatInterval:心跳发送间隔

自动检测服务端响应,心跳失败时触发重连

3. 全生命周期事件回调

onOpen:连接成功时触发

onClose:连接关闭时触发(携带 CloseEvent 参数)

onMessage:接收消息时触发(自动解析文本 / 二进制数据)

onError:连接报错时触发(捕获网络错误等异常)

快速上手

安装

# npm
npm install easy-websocket-client# yarn
yarn add easy-websocket-client# pnpm
pnpm add easy-websocket-client

基本使用

import WebSocketClient from 'easy-websocket-client';// 创建连接实例
const client = new WebSocketClient('wss://example.com/socket', {showLog: true,                  // 开启控制台日志reconnectInterval: 2000,        // 重连间隔 2 秒heartbeatInterval: 10000,       // 心跳间隔 10 秒heartbeatMessage: 'ping',       // 心跳消息maxReconnectAttempts: 5,        // 最大重连次数onOpen: () => console.log('连接已打开'),onClose: (e) => console.log('连接关闭', e),onMessage: (message) => console.log('收到消息', message),onError: (error) => console.error('连接错误', error),
});// 发起连接
client.connect();// 发送消息
client.send('Hello WebSocket!');// 关闭连接
client.close();

单例模式实现(装饰器方式)

import { singleton } from 'easy-websocket-client';interface Message {type: string;data: any;
}@singleton
class MyWebSocketClient extends WebSocketClient<Message> {constructor() {// 动态生成连接地址(支持开发/生产环境区分)const baseURL = import.meta.env.DEV? `ws://${import.meta.env.VITE_WS_HOST}:${import.meta.env.VITE_PORT}/ws`: import.meta.env.VITE_API_URL;super(baseURL, {heartbeatMessage: { type: 'HEARTBEAT', textMsg: 'ping' }, // 对象类型心跳消息heartbeatInterval: 10000,maxReconnectAttempts: 3,connectResend: true, // 重连后自动重发未完成的消息onMessage(data) {console.log('业务消息处理:', data);},});this.connect();}// 支持手动关闭并重置单例public close = () => {super.close();MyWebSocketClient.reset(); // 重置单例实例};
}// 全局唯一实例
const clientInstance = new MyWebSocketClient();

适用场景

实时聊天系统(如客服对话、直播间弹幕)

通知中心(如新消息提醒、系统公告推送)

实时数据监控(如仪表盘数据实时更新)

协同编辑工具(多人协作场景下的状态同步)

游戏实时交互(低延迟的游戏状态同步)

http://www.lryc.cn/news/599902.html

相关文章:

  • 为什么数组可以做到时间复杂度为O(1)的随机访问
  • MJ11032G和MJ11033G是对管由onsemi/安森美公司研发的一款高性能、低功耗的达林顿晶体管
  • Go、Node.js、Python、PHP、Java五种语言的直播推流RTMP协议技术实施方案和思路-优雅草卓伊凡
  • 从“人工眼”到‘智能眼’:EZ-Vision视觉系统如何重构生产线视觉检测精度?
  • VoWiFi技术深度解析:架构、流程与演进
  • 【数据库】探索DBeaver:一款强大的免费开源数据库管理工具
  • Python 程序设计讲义(21):循环结构——while循环
  • 深入浅出设计模式——创建型模式之工厂模式
  • Qt Mysql linux驱动编译
  • 异步---在b 方法中,想获取a 方法中接口最终返回值(或者说,等a方法中所有接口都返回值,再获取最终值)
  • ISIS高级特性LSP的分片扩展
  • 基于springboot的剧本杀预约管理系统
  • Windows Server 2003 R2系统C盘扩容教程
  • 蜘蛛强引的原理与百度SEO的关系
  • Java学习第七十三部分——Redis
  • Qt 与 MySQL 高级应用开发
  • 2025 Gitee vs. GitLab:全面对比与选择指南
  • Spring Boot 自动装配底层源码实现详解
  • 1 51单片机-C51语法
  • java面试题(一)
  • 函数-变量的作用域和生命周期
  • 算法思维进阶 力扣 62.不同路径 暴力搜索 记忆化搜索 DFS 动态规划 C++详细算法解析 每日一题
  • Vue基础(24)_VueCompinent构造函数、Vue实例对象与组件实例对象
  • 【循环语句,求100内能被6整除的和】
  • 智能制造——解读39页MOM数字化工厂平台解决方案【附全文阅读】
  • Android 10.0 sts CtsSecurityBulletinHostTestCases的相关异常分析
  • ARPG开发流程第一章——方法合集
  • 负载均衡:提升业务性能的关键技术
  • 后端项目中大量 SQL 执行的性能优化
  • ptmalloc(glibc-2.12.1)源码解析2