
Security News
Axios Supply Chain Attack Reaches OpenAI macOS Signing Pipeline, Forces Certificate Rotation
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.
supa-simple-socket
Advanced tools
一个简单易用的WebSocket客户端工具,支持心跳机制、断点重连、事件订阅和文件传输功能。
npm install supa-simple-socket
import SupaSocket from 'supa-simple-socket';
// 创建WebSocket实例
const socket = new SupaSocket({
url: 'wss://echo.websocket.org',
debug: true
});
// 监听消息
socket.on('message', (data) => {
console.log('收到消息:', data);
});
// 监听连接状态
socket.on('open', () => {
console.log('连接已建立');
// 发送消息
socket.send({ type: 'greeting', content: '你好,世界!' });
});
// 监听错误
socket.on('error', (error) => {
console.error('连接错误:', error);
});
// 关闭连接
// socket.close();
// 发送JSON对象
socket.sendJson({ type: 'chat', message: '你好!', timestamp: Date.now() });
// 发送文本
socket.sendText('普通文本消息');
// 发送二进制数据
const buffer = new ArrayBuffer(8);
socket.sendBinary(buffer);
// 发送文件
const fileInput = document.querySelector<HTMLInputElement>('#fileInput');
if (fileInput?.files?.[0]) {
socket.sendFile(fileInput.files[0], {
onProgress: (progress) => {
console.log(`上传进度: ${progress.toFixed(2)}%`);
},
chunkSize: 32 * 1024 // 设置块大小为32KB
});
}
// 使用链式调用添加多个事件监听器
socket
.on('open', () => console.log('连接已打开'))
.on('message', (data) => console.log('收到消息', data))
.on('close', () => console.log('连接已关闭'))
.on('error', (error) => console.error('发生错误', error))
.on('reconnecting', (data) => {
console.log(`正在尝试重连 (${data.attempt}/${data.limit}),延迟:${data.delay}ms`);
})
.on('statusChange', ({ newStateName, oldStateName }) => {
console.log(`连接状态从 ${oldStateName} 变为 ${newStateName}`);
});
// 一次性事件监听(触发一次后自动移除)
socket.once('message', (firstMessage) => {
console.log('收到第一条消息后我不会再被调用:', firstMessage);
});
// 移除特定事件的所有监听器
socket.off('message');
// 检查是否有某个事件的监听器
if (socket.hasListeners('error')) {
console.log('已注册错误处理器');
}
// 获取所有已注册的事件
console.log('已注册的事件:', socket.events);
// 检查连接状态
if (socket.isConnected) {
console.log('WebSocket已连接');
}
// 获取当前连接状态
console.log('当前状态:', socket.connectionStateName);
// 手动重连
socket.reconnect();
// 重置重连计数并重连
socket.reconnect(true);
// 检查连接并在需要时自动重连
socket.checkConnection();
// 禁用自动重连
socket.disableAutoReconnect();
// 重新启用自动重连
socket.enableAutoReconnect();
// 获取最后一次收到消息的时间
console.log('最后接收消息时间:', socket.lastReceivedTime);
// 获取距离最后一次收到消息的时间(毫秒)
console.log('消息静默时间:', socket.timeSinceLastMessage);
// 销毁实例并释放资源
socket.destroy();
// 实例化后更新配置
socket.updateOptions({
heartbeatInterval: 20000,
reconnectLimit: 10,
debug: true
});
// 获取当前配置
const currentOptions = socket.getOptions();
console.log('当前配置:', currentOptions);
SupaSocket 构造函数接受以下配置选项:
| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| url | string | - | WebSocket服务器URL(必填) |
| reconnectLimit | number | 5 | 最大重连次数 |
| reconnectInterval | number | 5000 | 重连初始间隔(毫秒) |
| heartbeatInterval | number | 30000 | 心跳发送间隔(毫秒) |
| heartbeatTimeout | number | 5000 | 心跳超时时间(毫秒) |
| autoReconnect | boolean | true | 是否自动重连 |
| debug | boolean | false | 是否输出调试日志 |
| protocols | string | string[] | - | WebSocket协议 |
| binaryType | BinaryType | - | 二进制数据类型 |
| autoParseMessage | boolean | true | 是否自动解析JSON消息 |
| maxReconnectDelay | number | 30000 | 最大重连延迟(毫秒) |
| retryOnError | boolean | true | 错误时是否重试 |
| connectionTimeout | number | 10000 | 连接超时时间(毫秒) |
| pingMessage | any | { type: 'ping' } | 自定义心跳消息 |
| pongMessage | any | { type: 'pong' } | 自定义心跳响应消息 |
| onOpen | (event) => void | - | 连接建立回调 |
| onClose | (event) => void | - | 连接关闭回调 |
| onError | (event) => void | - | 连接错误回调 |
| onStatusChange | (newState, oldState) => void | - | 状态变化回调 |
type字段,也会触发对应type的事件ConnectionState 枚举定义了以下连接状态:
相比原生WebSocket,Supa Simple Socket提供了以下优势:
该库可以在所有支持WebSocket API的现代浏览器和Node.js环境中使用。
详细的示例可以查看test/demo.html。
MIT
FAQs
一个简单易用的WebSocket客户端工具,支持心跳机制、断点重连和事件订阅
We found that supa-simple-socket demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.

Security News
Open source is under attack because of how much value it creates. It has been the foundation of every major software innovation for the last three decades. This is not the time to walk away from it.

Security News
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.