更新记录

1.0.0(2026-11-05) 下载此版本

1.0.0

  • 首个版本,功能可用

平台兼容性

pk-websocket 心跳重连套件

生产级 WebSocket 客户端:心跳保活、假死检测、指数退避重连、离线消息队列、事件订阅。纯 JS 封装 uni.connectSocket,全端可用。

为什么做它

uni.connectSocket 是裸 API:断线不管、假死不测、离线消息全丢。DTU/IM/行情类项目每个都要重写心跳重连层。pk-websocket 开箱即得:心跳 + deadFactor 假死判定 + ±20% 抖动退避 + 断线期间消息自动缓冲重连后冲刷。

快速上手

import ws from '@/uni_modules/pk-websocket/js_sdk/index.js';

await ws.connect('wss://example.com/ws', {
  heartbeatInterval: 30000,   // 30s 心跳
  heartbeatMsg: '{"type":"ping"}',
  maxRetries: 10,             // -1 无限重连
  backoffBase: 1000,          // 退避起点 1s
  backoffMax: 30000           // 退避封顶 30s
});

ws.on('message', (msg) => console.log('收到:', msg));
ws.on('reconnect', ({ attempt, delay }) => console.log(`第${attempt}次重连,${delay}ms 后`));

ws.send('hello');   // 未连接时自动入离线队列

全部方法

方法 说明
connect(url, opts) 连接。非法 URL 直接拒绝(E-WS-03)
send(data, opts) 发送;未连接入队({ queue:false } 直接拒绝)
close(opts) 主动关闭,不触发重连,返回丢弃的队列条数
getState() idle / connecting / open / reconnecting / closed / error
getStats() { reconnects, sent, received, lastError, queueSize, attempts }
on/once/off(event, fn) 订阅 open / message / close / error / reconnect / state

核心机制

  • 状态机:非法迁移抛 E-WS-01(如 idle→open),状态轨迹全记录
  • 心跳假死检测:距上次活动超过 heartbeatInterval × deadFactor(默认2.5) → 主动断开重连,专治「TCP 半开连接」
  • 指数退避:base × 2^attempt 封顶 max,±20% 抖动防雪崩
  • 离线队列:断线期间 FIFO 缓冲(默认上限 100,超限丢最旧),重连成功自动冲刷
  • 重试语义:maxRetries 计「连续失败次数」,连接成功即清零

示例工程

example/ 为完整可跑工程(含可编程 mock 服务器演示重连全流程)。在线文档:https://plugins.cnajiu.cn/public/pk-websocket.html

隐私、权限声明

1. 本插件需要申请的系统权限列表:

无

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

许可协议

MIT协议

暂无用户评论。