一个功能强大的 WebSocket 客户端,支持自动重连、心跳检测、消息缓存、认证等功能。
- 🔄 自动重连机制
- 💓 可配置的心跳检测
- 📦 消息缓存功能
- 🔐 认证支持
- 📊 连接状态统计
- 🔄 单例模式支持
- 📨 二进制数据支持
- ⏱️ 超时处理
- 🚀 Promise 风格的 API
npm install @your-org/websocket-client
# 或
yarn add @your-org/websocket-client
# 或
pnpm add @your-org/websocket-client
import WebSocketClient from '@your-org/websocket-client';
// 创建实例
const ws = new WebSocketClient('ws://example.com', {
autoConnect: true, // 自动连接
clientId: 'client-123',
});
// 监听事件
ws.on('open', (stats) => {
console.log('Connected!', stats);
});
ws.on('message', (data) => {
console.log('Received:', data);
});
ws.on('error', (errorInfo) => {
console.error('Error:', errorInfo);
});
// 发送消息
ws.send({ type: 'message', content: 'Hello' });
// 获取单例实例
const ws1 = WebSocketClient.getInstance('ws://example.com', {
singleton: true,
clientId: 'client-123',
});
// 再次获取相同的实例
const ws2 = WebSocketClient.getInstance('ws://example.com', {
singleton: true,
clientId: 'client-123',
});
console.log(ws1 === ws2); // true
// 销毁单例实例
WebSocketClient.destroyInstance('ws://example.com', {
singleton: true,
clientId: 'client-123',
});
// 销毁所有实例
WebSocketClient.destroyAllInstances();
const ws = new WebSocketClient('ws://example.com', {
authToken: 'your-auth-token',
clientId: 'client-123',
});
ws.on('auth', ({ success }) => {
console.log('Authentication:', success ? 'successful' : 'failed');
});
const ws = new WebSocketClient('ws://example.com', {
enableMessageCache: true,
maxCacheSize: 100,
});
// 获取缓存的消息
const cachedMessages = ws.getCachedMessages();
// 清空缓存
ws.clearMessageCache();
const ws = new WebSocketClient('ws://example.com', {
binaryType: 'blob', // 或 'arraybuffer'
});
// 发送二进制数据
const binaryData = new Blob(['Hello, World!']);
ws.sendBinary(binaryData);
// 监听二进制数据
ws.on('binary', (data) => {
console.log('Received binary data:', data);
});
new WebSocketClient(url, options);
url
: WebSocket 服务器地址options
: 配置对象reconnectInterval
: 重连间隔时间(毫秒),默认 3000heartbeatInterval
: 心跳间隔时间(毫秒),默认 30000maxReconnectAttempts
: 最大重连次数,默认 5enableReconnect
: 是否启用重连,默认 trueinfiniteReconnect
: 是否无限重连,默认 falseenableMessageCache
: 是否启用消息缓存,默认 falsemaxCacheSize
: 最大缓存消息数量,默认 100clientId
: 客户端IDauthToken
: 认证tokenheartbeatData
: 自定义心跳数据binaryType
: 二进制数据类型,'blob' 或 'arraybuffer',默认 'blob'autoConnect
: 是否自动连接,默认 falsesingleton
: 是否使用单例模式,默认 false
WebSocketClient.getInstance(url, options)
: 获取单例实例WebSocketClient.destroyInstance(url, options)
: 销毁单例实例WebSocketClient.destroyAllInstances()
: 销毁所有实例
connect()
: 建立连接disconnect()
: 断开连接send(data, options)
: 发送消息sendBinary(data, options)
: 发送二进制数据on(event, callback)
: 监听事件off(event, callback)
: 取消监听事件getConnectionStats()
: 获取连接统计信息getCachedMessages()
: 获取缓存的消息clearMessageCache()
: 清空消息缓存
open
: 连接建立close
: 连接关闭message
: 收到消息error
: 发生错误reconnect
: 重连尝试auth
: 认证结果heartbeat
: 心跳发送binary
: 收到二进制数据
错误事件会提供以下信息:
interface ErrorInfo {
type: WebSocketErrorType;
error: Error;
timestamp: Date;
connectionStats: ConnectionStats;
}