更新记录
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

收藏人数:
下载插件并导入HBuilderX
下载插件ZIP
赞赏(0)
下载 3
赞赏 0
下载 12744412
赞赏 1959
赞赏
京公网安备:11010802035340号