WebSocket 在线测试工具
在线 WebSocket 连接测试、消息发送与接收调试工具
什么是 WebSocket?
WebSocket 测试工具会连接指定的 WebSocket 地址,帮助确认实时通道是否能打开、发送消息并接收响应。WebSocket 常用于聊天、实时仪表盘、通知、多人互动、行情数据、设备通信和其他长连接双向场景。它适合开发调试、代理配置排查、TLS 检查,以及比较 ws:// 与 wss:// 端点行为。但它不是压测工具,也不是完整协议分析器。认证、子协议协商、心跳、重连策略、消息格式、背压和服务器限制仍需要在真实客户端和部署环境中验证。连接成功只能说明当前条件下某条路径可用。
使用方法
使用方法
- 在 URL 输入框中填入 WebSocket 服务器地址(ws:// 或 wss://)
- 可选:输入子协议,多个用逗号分隔
- 点击「连接」建立 WebSocket 连接
- 在输入框中填写要发送的消息内容
- 选择消息类型(Text 或 JSON),JSON 类型会自动校验格式
- 点击「发送」或按 Ctrl + Enter 发送消息
- 在消息列表中查看已发送和已接收的消息,点击即可复制
连接提示
- 从 HTTPS 页面测试时请使用 wss://;浏览器通常会阻止安全来源下的非安全 ws:// 连接。
- 调试过程中,在断开连接、刷新或切换端点之前,请先导出或复制重要的消息日志。
使用场景
技术原理
WebSocket 协议的核心是 HTTP 升级。客户端首先发送普通的 HTTP GET 请求,但附带 Upgrade: websocket 和 Connection: Upgrade 头以及一个随机生成的 Sec-WebSocket-Key。服务器验证这些头后,返回 101 Switching Protocols 响应,包含 Sec-WebSocket-Accept 值——该值是 Key 拼接固定 GUID 后取 SHA-1 再 Base64 编码的结果。101 响应之后,TCP 连接从 HTTP 切换到 WebSocket,后续数据以 WebSocket 帧的形式传输。WebSocket 帧头至少 2 字节,包含 FIN 标志、操作码(0x1 文本、0x2 二进制、0x8 关闭、0x9 ping、0xA pong)和载荷长度。ping/pong 帧用于心跳检测;浏览器 API 不会自动发送,需要应用层实现。wss:// 等同于 HTTPS+WebSocket,先进行 TLS 握手再进行 WebSocket 升级;ws:// 是明文传输,浏览器会拒绝 https 页面上的 ws:// 端点以防止降级攻击。单帧默认上限约 1MB,较长的消息会拆分为多帧传输。
- 握手:客户端发送带 Upgrade: websocket 头的 HTTP GET 请求,服务器返回 101 Switching Protocols 表示升级成功
- Sec-WebSocket-Key 是浏览器随机生成的 16 字节 Base64 字符串;服务器拼接固定 GUID 后取 SHA-1,通过 Sec-WebSocket-Accept 验证
- 帧格式:每个帧携带至少 2 字节的头,包含 FIN、操作码(文本/二进制/ping/pong/关闭)和载荷长度
- ws:// 是明文传输,wss:// 是基于 HTTPS 的 WebSocket;浏览器在 https 站点上拒绝 ws:// 以防止降级攻击
- ping/pong 帧用于心跳:RFC 6455 要求每个 ping 都必须回复 pong;浏览器不会自动发送心跳,需要应用层实现
- 关闭序列:任一方发送带状态码的 0x8 关闭帧,对端回复匹配的关闭帧,之后 TCP 连接才真正释放
示例
连接公共 Echo 服务
wss://echo.websocket.org —— 101 Switching Protocols 握手成功,发送 "hello" 立即回显 "hello"调试自己的 WebSocket 服务
wss://api.example.com/ws —— 子协议 graphql-ws,连接成功,订阅消息正常接收复现连接断开问题
wss://api.example.com/ws —— 服务端在连接建立 30 秒后主动关闭,关闭码 1006(异常关闭)常见问题
这个 WebSocket 测试工具能做什么?
可以连接任意 ws:// 或 wss:// 端点,收发消息并查看协议交互过程。在开发期间用于测试 WebSocket API、基于 WS 的 MQTT 代理、实时游戏服务器、聊天系统、行情推送等都很方便。
消息会经过你们的服务器吗?
不会。浏览器会直接与目标主机建立 WebSocket 连接,不经任何中转,我们这边也不会有日志。目标主机看到的就是你的 IP,和其他普通客户端一样。
为什么连不上我本地的端点?
混合内容规则:如果本页面是通过 HTTPS 加载的,浏览器会拦截 ws://(不安全)连接。请把目标改成 wss://,或在本地测试时用 HTTP 加载本页面。具体的拦截原因可以在浏览器控制台中看到。
可以发送二进制数据吗?
可以。多数版本同时支持文本帧和二进制帧。二进制输入通常用 Base64 或十六进制,发送前页面会先解码。二进制响应默认以十六进制或 Base64 形式展示。
怎么添加自定义请求头?
浏览器的 WebSocket API 不允许自定义请求头——这是 Web 平台的限制。唯一能设置的请求头是 Sec-WebSocket-Protocol(子协议)。要做 Bearer token 认证,可以用查询参数或首条消息认证;部分服务器也接受 Cookie。
能测试压缩和扩展协议吗?
对于声明支持 per-message-deflate 的服务器,浏览器会自动协商,页面通常会显示协商出的扩展名。自定义扩展无法测试——浏览器没有暴露相关控制接口。
为什么我的连接老是断开?
常见原因:服务器空闲超时(通常 30-120 秒)、代理或负载均衡的超时、网络中断,或者你笔记本进入睡眠。现代 WebSocket 需要 ping/pong 心跳;请确认服务器有发送 ping,或让客户端定期发送消息保活。