SocketLabUSER GUIDE
SOCKETLAB DOCUMENTATION

WebSocket 调试,
从连接到定位问题。

这份指南帮助你快速连接服务、发送不同格式的消息、分析数据流,并正确处理 GitHub Pages 与 WSS 部署问题。

CONNECTION FLOW
1
浏览器SocketLab
WSS / TLS
2
目标服务WebSocket Server
数据只在浏览器与目标服务器间传输
01

三步开始调试

无需安装插件,也不需要后端服务。

01
⌁

输入地址

填写完整的 ws:// 或 wss:// 服务地址。

02
↔

建立连接

按需配置子协议、超时和自动重连,然后点击建立连接。

03
↑

发送消息

选择 Text、JSON、Hex 或 Base64,输入载荷后发送。

✓
快速体验

默认 Echo 服务会原样返回消息,可直接用于验证发送、接收和延迟测试。

02

连接服务器

先确定页面环境,再选择 WS 或 WSS。

基础连接

  1. 1
    输入服务地址

    例如 wss://example.com/socket?token=abc。省略协议时会自动补充 ws://。

  2. 2
    检查页面协议

    HTTPS 页面必须连接 wss://,否则浏览器会阻止请求。

  3. 3
    点击建立连接

    状态变为 OPEN 后,消息发送功能会自动启用。

服务器地址
WSSwss://example.com/socket
状态OPEN协议默认在线时长00:12:36

高级连接设置

子协议

多个值使用英文逗号分隔,例如 graphql-ws, chat。

连接超时

超过指定毫秒数仍未建立连接时,主动结束本次尝试。

二进制类型

选择以 ArrayBuffer 或 Blob 接收二进制消息。

断线重连

连接异常结束后使用指数退避重试,最长等待 30 秒。

!
浏览器不能设置自定义握手 Header

Token 鉴权请使用 Cookie、URL 参数或 WebSocket 子协议。URL 中不要放置长期有效的敏感 Token。

03

发送消息

根据协议选择正确的载荷格式。

模式输入示例实际发送
Texthello worldUTF-8 文本
JSON{"type":"ping"}压缩后的 JSON 文本
Hex48 65 6c 6c 6fUint8Array 二进制
Base64SGVsbG8=解码后的二进制
附件选择本地文件文件 ArrayBuffer
{ }

JSON 工具

“格式化”增加缩进方便阅读,“压缩”移除空格并验证 JSON 是否有效。

◷

定时发送

设置间隔和发送次数;次数为 0 时持续发送,断开连接后自动停止。

↔

延迟测试

发送唯一文本并等待相同内容回显,仅适用于 Echo 或实现了回显的服务。

⇧

发送文件

文件通过 ArrayBuffer 发送,发送前请确认服务端支持对应的二进制协议。

04

查看消息流

大量消息也只在消息框内部滚动,发送按钮始终保持可见。

全部接收发送系统
新消息默认折叠⌄
↑发送JSON · 45 B
{  "event": "hello",
  "data": "SocketLab"
}
收起
默认折叠

新消息默认单行显示,可在顶部改为默认展开;设置会自动保存。

独立展开

点击“展开/收起”,或双击消息标题区域切换显示状态。

筛选与搜索

按接收、发送、系统方向筛选,或直接搜索消息内容。

JSON 高亮

合法 JSON 自动格式化,并区分键名、字符串、数字和布尔值。

暂停记录

暂停后仍保持连接,但新消息不会加入页面记录。

会话导出

把连接信息、统计和消息导出为 JSON,以便复现和共享。

05

模板、统计与本地数据

减少重复输入,快速复现调试过程。

01

消息模板

保存常用载荷,之后从模板页面一键加载到发送区。

02

会话统计

查看收发数量、流量、消息速率、连接信息和最近延迟。

03

导入会话

导入之前导出的 JSON 文件,在消息流中重新查看记录。

i
隐私说明

模板、偏好和最近地址保存在浏览器 localStorage;消息保存在当前页面内存,除非你主动导出。SocketLab 没有后端上传接口。

06

部署与 WSS

GitHub Pages 用户最容易遇到的问题。

BLOCKED · MIXED CONTENT
The page at https://... requested insecure content from
ws://192.168.1.140:5010/. This content was blocked.

HTTPS 页面不能连接明文 ws://。GitHub Pages 默认使用 HTTPS,因此目标服务必须提供 wss://,或改为通过局域网 HTTP 页面使用 SocketLab。

✓http:// 页面→ws:// 服务可连接
✓https:// 页面→wss:// 服务推荐
×https:// 页面→ws:// 服务浏览器阻止

推荐:通过 Caddy 提供 WSS

Caddyfile
ws.example.com {
    reverse_proxy 127.0.0.1:5010
}

然后在 SocketLab 中使用 wss://ws.example.com/?token=1。如果目标是私有 IP,可在局域网通过 HTTP 打开 SocketLab,或使用内部 CA,并让每台客户端信任根证书。

!
仅修改 ws 为 wss 无法解决问题

服务端或反向代理必须真正启用 TLS,并提供与访问域名匹配、受浏览器信任的证书。完整 Caddy、Nginx 和局域网方案请查看 README 部署章节。

07

快捷键

保持手在键盘上,减少重复操作。

发送当前消息
Ctrl/⌘+Enter
聚焦服务器地址
Ctrl/⌘+K
聚焦消息搜索
Ctrl/⌘+F
断开当前连接
Esc
调整发送区高度
↑/↓
折叠或展开消息
双击标题
08

常见故障排查

从浏览器、代理和服务端三端同时确认。

为什么一直显示 CONNECTING?+

检查地址和端口是否可达、服务端是否监听、证书是否有效,以及 HTTPS 页面是否错误连接了 ws://。浏览器 WebSocket 错误信息较少,应同时查看开发者工具和服务端日志。

为什么连接后立即出现 1006?+

1006 表示异常断开,常见原因包括 TLS 握手失败、代理没有正确转发 Upgrade、服务端异常或网络中断。

为什么 Nginx 返回 400 或 502?+

400 常见于 Upgrade Header 没有转发;502 表示代理无法连接后端,请检查 proxy_pass、监听地址、容器网络和防火墙。

为什么过一段时间自动断开?+

代理可能设置了空闲超时。增加 Nginx 的 proxy_read_timeout,并让服务端定期发送 WebSocket Ping 或业务心跳。

为什么不能添加 Authorization Header?+

浏览器原生 WebSocket API 不允许自定义握手 Header。请改用 HttpOnly Cookie、短期 URL Token 或 WebSocket 子协议。

READY TO DEBUG?

现在开始一次 WebSocket 会话

所有消息都在你的浏览器中处理,不经过 SocketLab 服务器。

打开 SocketLab →