5分钟上手Reconnecting WebSocket:简单实现浏览器与服务器的自动重连
【免费下载链接】reconnecting-websocket Reconnecting WebSocket. For Web, React Native, cli (Node.js) 项目地址: https://gitcode.com/gh_mirrors/rec/reconnecting-websocket
Reconnecting WebSocket是一个强大的JavaScript库,专为解决WebSocket连接不稳定问题而设计,能够自动检测连接中断并尝试重新连接,确保浏览器与服务器之间的实时通信持续可靠。无论是Web应用、React Native还是Node.js环境,都能轻松集成使用。
📦 快速安装指南
npm安装(推荐)
通过npm可以快速将Reconnecting WebSocket添加到项目中:
npm install reconnecting-websocket –save
源码集成
如果需要直接使用源码,可以克隆项目仓库:
git clone https://gitcode.com/gh_mirrors/rec/reconnecting-websocket
核心实现文件位于项目根目录的reconnecting-websocket.ts,包含了完整的自动重连逻辑。
🚀 基础使用示例
创建连接
只需几行代码即可创建一个具备自动重连功能的WebSocket连接:
import ReconnectingWebSocket from 'reconnecting-websocket';
// 创建连接实例
const rws = new ReconnectingWebSocket('wss://your-server.com/ws');
// 监听连接打开事件
rws.onopen = () => {
console.log('连接已建立 ✅');
rws.send('Hello Server!'); // 发送消息
};
// 监听消息事件
rws.onmessage = (event) => {
console.log('收到消息:', event.data);
};
// 监听错误事件
rws.onerror = (error) => {
console.error('发生错误:', error);
};
// 监听关闭事件
rws.onclose = (event) => {
console.log('连接关闭,正在尝试重连… ⏳');
};
⚙️ 高级配置选项
Reconnecting WebSocket提供了丰富的配置选项,可根据需求调整重连行为:
const options = {
maxReconnectionDelay: 10000, // 最大重连延迟(毫秒)
minReconnectionDelay: 1000, // 最小重连延迟(毫秒)
reconnectionDelayGrowFactor: 1.3, // 延迟增长因子
connectionTimeout: 4000, // 连接超时时间(毫秒)
maxRetries: Infinity, // 最大重连次数
debug: false // 是否启用调试日志
};
const rws = new ReconnectingWebSocket('wss://your-server.com/ws', [], options);
常用配置说明
- 重连策略:采用指数退避算法,重连间隔从minReconnectionDelay开始,按reconnectionDelayGrowFactor因子增长,直到达到maxReconnectionDelay
- 连接超时:超过connectionTimeout未建立连接将触发超时重连
- 消息队列:连接中断期间发送的消息会自动排队,连接恢复后按顺序发送
💡 实用功能与方法
手动控制连接
// 主动关闭连接(不会自动重连)
rws.close();
// 手动触发重连
rws.reconnect();
状态查询
// 获取当前连接状态
console.log('连接状态:', rws.readyState);
// 可能值: CONNECTING(0), OPEN(1), CLOSING(2), CLOSED(3)
// 获取重连次数
console.log('已重连次数:', rws.retryCount);
📝 项目结构与核心文件
项目采用TypeScript开发,主要文件结构如下:
- 核心实现:reconnecting-websocket.ts – 包含ReconnectingWebSocket类的完整实现
- 事件定义:events.ts – WebSocket事件类型定义
- 测试文件:tests/test.ts – 单元测试
- 构建配置:rollup.config.js – 打包配置,支持多种模块格式输出
🧪 浏览器兼容性
Reconnecting WebSocket基于标准WebSocket API构建,兼容所有支持原生WebSocket的环境:
- 现代浏览器(Chrome, Firefox, Safari, Edge)
- React Native
- Node.js(需配合ws模块)
🔍 常见问题解决
连接频繁断开?
检查网络稳定性,可尝试增大minUptime参数(默认5000ms),确保连接稳定后再重置重连计数器。
消息发送失败?
当连接未就绪时,消息会自动加入队列,可通过bufferedAmount属性查看待发送消息量:
console.log('待发送消息字节数:', rws.bufferedAmount);
如何自定义重连逻辑?
可通过继承ReconnectingWebSocket类并重写_getNextDelay()方法实现自定义重连策略。
通过Reconnecting WebSocket,开发者可以专注于业务逻辑实现,无需关心复杂的连接维护细节,轻松构建稳定可靠的实时通信应用。无论是在线聊天、实时数据展示还是多人协作工具,Reconnecting WebSocket都是提升用户体验的理想选择。
【免费下载链接】reconnecting-websocket Reconnecting WebSocket. For Web, React Native, cli (Node.js) 项目地址: https://gitcode.com/gh_mirrors/rec/reconnecting-websocket
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考


