輕松管理 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.pswp.cn/news/916761.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/916761.shtml
英文地址,請注明出處:http://en.pswp.cn/news/916761.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

人工智能賦能社會治理:深度解析與未來展望

一、核心應用場景與技術實現1. 公共安全&#xff1a;智能防控與風險預警技術應用&#xff1a;立體化治安防控&#xff1a;AI攝像頭集成人臉識別、行為分析、多目標追蹤技術&#xff0c;提升破案率與公共安全能力。例如&#xff0c;深圳某區通過AI系統使盜竊案件破案率提升40%。…

解決使用vscode連接服務器出現“正在下載 VS Code 服務器...”

# 解決使用vscode連接服務器出現“正在下載 VS Code 服務器...”## 首先在vscode的輸出中獲取 commit idtext [17:17:41.679] Using commit id "c306e94f98122556ca081f527b466015e1bc37b0" and quality "stable" for server 從上面的體制中可以看出&#…

React 項目中使用 Redux 實現公共狀態共享

在 React 項目中使用 Redux 實現公共下拉選狀態共享并通知各組件更新的完整方案如下&#xff1a;1. 安裝 Redux 必要依賴 npm install reduxjs/toolkit react-redux2. 創建 Redux Store 和 Slice store/selectSlice.js import { createSlice } from reduxjs/toolkit;const init…

徹底清理ArcGIS 10.2殘留的步驟

文章目錄前言一、徹底清理ArcGIS 10.2殘留的步驟總結前言 提示&#xff1a;這里可以添加本文要記錄的大概內容&#xff1a; 提示&#xff1a;以下是本篇文章正文內容&#xff0c;下面案例可供參考 一、徹底清理ArcGIS 10.2殘留的步驟 &#x1f527; 徹底清理ArcGIS 10.2殘留的…

JDK主流版本及推薦版本

根據當前Java生態發展&#xff08;截至2025年7月&#xff09;&#xff0c;結合主流企業實踐、技術特性和支持周期&#xff0c;以下是JDK主流版本及推薦版本的詳細分析&#xff1a;&#x1f9e9; 一、主流JDK版本現狀??JDK 8 (LTS)????使用比例??&#xff1a;約30-35%&a…

如何從 Web2 轉型到 Web3

如何從 Web2 轉型到 Web3如何從 Web2 轉型到 Web3引言Web2 與 Web3 的核心差異轉型的實用步驟1. 打基礎&#xff1a;學區塊鏈和 Web3 概念2. 學核心技術棧&#xff1a;從 Solidity 到 dApp3. 重新設計產品&#xff1a;混合模式起步4. 應對坑&#xff1a;技術、監管和安全5. 建社…

RuoYi-Vue 項目 Docker 容器化部署 + DockerHub 上傳全流程

本文詳細記錄本人在實際項目從 RuoYi-Vue 二次開發到 Docker 鏡像打包、DockerHub 上傳、異地一鍵部署的完整實戰全過程。涵蓋前后端打包產物準備、SQL初始化、docker-compose 管理、DockerHub 鏡像上傳、Gitee 代碼管理、子模塊大坑、數據庫404等所有可能出錯細節&#xff0c;…

【C語言進階】題目練習

目錄 1.箭形圖案 思路&#xff1a; 代碼&#xff1a; 2. 公務員面試 分析&#xff1a; 代碼 &#xff1a; 3. 判斷結構體大小&#xff08;1&#xff09; 答案&#xff1a; 分析&#xff1a; 4.判斷結構體大小&#xff08;2&#xff09; 答案: 分析: 5.宏定義計算…

Blender入門筆記——建模篇(二)

前言 在數字建模的世界中&#xff0c;快捷鍵和高效的操作是提高工作效率的關鍵。本手冊為您提供了常用的建模快捷鍵及操作技巧&#xff0c;幫助您在各種建模軟件中更加得心應手。無論是進行點、線、面操作&#xff0c;還是調整視圖、切換模式&#xff0c;這些快捷方式都將成為…

sqlite3學習---基礎知識、增刪改查和排序和限制、打開執行關閉函數

目錄 一、數據庫基礎知識 1.分類 2.名詞 3.嵌入式數據庫 4.特點 5.sqlite3的安裝 5.1在線安裝 5.2編譯 5.3驗證是否安裝成功 5.4sqlite3的使用 6.創建一個數據庫 7.系統維護命令 二、數據庫的創建和刪除 1.創建一個表 1.1用法 1.2代碼示例 2.刪除一個表 2.1用…

Class24AlexNet

Class24AlexNet AlexNet AlexNet于2012年ImageNet 圖像識別挑戰賽&#xff08;ILSVRC-2012&#xff09;中以 top-5 錯誤率15.3%獲得冠軍&#xff0c;遠遠領先第二名。它首次在大型圖像數據集上證明了深層卷積神經網絡的強大能力。 AlexNet 的總體結構 AlexNet 總共有 8 層具有學…

枚舉中間位置高級篇

參考資料來源靈神在力扣所發的題單&#xff0c;僅供分享學習筆記和記錄&#xff0c;無商業用途。 核心思路&#xff1a;參考枚舉中間位置基礎篇-CSDN博客 力扣題單練習(靈神題單中摘取題目) 447. 回旋鏢的數量 核心思路&#xff1a; 因給出的點都不相同&#xff0c;所以不會…

主數據管理系統能代替數據中臺嗎?

目錄 一、主數據管理系統≠數據中臺 1. 主數據管理系統&#xff1a;管的是 “不變的核心數據” 2. 數據中臺&#xff1a;管的是 “流動中的價值” 二、為什么企業更該先建 MDM&#xff1f; 1. 數據中臺解決不了數據本身問題 2. MDM 可以解決常見的基礎問題 3. 數字化轉型…

Nmap 終極教程:安裝、常用命令及法律法規指南

Nmap 終極教程&#xff1a;安裝、常用命令及法律法規指南 Nmap&#xff08;Network Mapper&#xff09;是一款強大的 網絡掃描和安全審計工具&#xff0c;廣泛用于滲透測試、網絡探測和系統管理。本教程涵蓋 安裝方法、常用命令詳解、輸出解析 以及 法律法規注意事項&#xff…

開源嵌入式數組引擎TileDB的簡單使用

TileDB 是C編寫的存儲和訪問通用多維數組引擎&#xff0c;它的官方Github網站https://github.1git.de/TileDB-Inc/TileDB 1.下載源代碼和二進制庫 源代碼https://github.1git.de/TileDB-Inc/TileDB/archive/refs/tags/2.28.1.tar.gz 選擇符合你的機器CPU架構和操作系統的庫 二進…

AI對服務器行業的沖擊與啟示:從挑戰走向重構

更多云服務器知識&#xff0c;盡在hostol.comAI&#xff08;人工智能&#xff09;技術的迅猛發展&#xff0c;已深刻影響了多個行業&#xff0c;服務器行業亦不例外。在過去&#xff0c;服務器的主要任務是簡單地提供存儲、計算和傳輸數據的服務。然而&#xff0c;隨著AI的崛起…

基于三臺主機搭建 Web 服務環境:Nginx、NFS 與 DNS 配置全流程

基于三臺主機搭建 Web 服務環境&#xff1a;Nginx、NFS 與 DNS 配置全流程 一、引言 在當今數字化的時代&#xff0c;搭建一個穩定、高效的 Web 服務環境是許多開發者和運維人員的常見需求。本文將詳細介紹如何利用三臺主機搭建一個包含 Nginx、NFS 和 DNS 服務的 Web 環境&…

MySQL——MVCC

1.為什么需要MVCC在并發場景下&#xff0c;讀寫操作會面臨嚴重的沖突問題&#xff1a;1.讀操作如果遇到寫操作&#xff0c;要么“讀到未提交的臟數據”&#xff0c;要么“被寫操作阻塞&#xff08;等待鎖釋放&#xff09;”&#xff1b;2.寫操作如果遇到讀操作&#xff0c;要么…

數據結構第2問:什么是算法?

算法 算法是一組用于解決具體問題的、明確的、有序的步驟或規則&#xff0c;能夠在有限的時間內通過這些步驟得到問題的答案。 算法的5個重要特性&#xff1a; 有窮性&#xff1a;算法必須在有限的步驟內結束&#xff0c;不能無限循環&#xff0c;保證最終能夠得到結果。確定性…

12-大語言模型—Transformer 打地基,下游任務蓋出百樣房,指標來驗收|下游任務白話指南

目錄 1、核心邏輯&#xff1a;Transformer 的 “語言處理閉環” 2、轉導與感知 → 模型咋 “理解語言”&#xff1f; 2.1、 人類 vs 機器的 “語言理解邏輯” 2.2、 自注意力機制&#xff1a;模型 “理解語言” 的數學核心 2.2.1、通俗拆解 2.2.1.1、是什么&#xff1f; …