Skip to content

WebSocket 在线测试(ws/wss 客户端)

WebSocket 在线测试:二进制按 HEX 显示、可发 HEX/Base64 字节;Chrome 147+ 允许本地网络访问后可测 localhost 和局域网 IP;断开显示关闭码与排查清单。消息不经过我们的服务器。

浏览器中运行 免费
消息由你的浏览器直接发往你填写的服务器,不经过 go-tools 的服务器。
填入: (第三方回显服务:可用性不保证,消息会发到该第三方)
未连接

收发的消息显示在这里。点「连接」之前,工具不会发起任何 WebSocket 连接。

定时发送(应用层心跳)
ms

这是按间隔发送一条普通文本消息,不是 WebSocket 协议层的 ping 帧——网页无法发送也看不到 ping/pong 帧。默认关闭,因为不认识这条消息的服务器可能会断开连接。

连接、文本与二进制消息、关闭码、握手失败、连接超时、Socket.IO 握手、心跳、自动重连以及 10,000 条消息的推送压测,均在本地 WebSocket 服务器上做了端到端测试;本页描述的浏览器行为于 2026 年 10 月在 Chromium、Firefox 和 WebKit 中实测。 — Go Tools 团队 · 2026年10月13日

由 Go Tools 工程团队构建并验证。

WebSocket 在线测试速查

这个 HTTPS 页面能连 ws://localhost 吗?

Chrome 允许本地网络访问后可以 取决于浏览器(截至 2026 年 10 月)。Chrome 147 起会先询问是否允许本页访问本地网络上的设备,选「允许」后可以连 ws://localhost 和写成 IP 的局域网 ws:// 地址;Firefox 能直接连 localhost,但会拦截局域网地址;Safari 会拦截从 HTTPS 页面发起的 ws:// 连接。

连接失败为什么只显示 1006?

浏览器不告诉网页原因 握手失败时,浏览器按规范只告诉网页「出错 + 关闭码 1006」,不提供 HTTP 状态码和原因。按 F12 打开控制台,Chrome 和 Edge 会显示服务器返回的状态码。

能加 Authorization 请求头吗?

浏览器不能设置请求头 不能。浏览器的 WebSocket API 没有设置请求头的接口。可以把 token 放在 URL 参数、子协议或 Cookie 里,具体看服务器支持哪种。

定时发送的心跳是 ping 帧吗?

是一条普通消息 不是。网页无法发送也看不到协议层的 ping/pong 帧,服务器发来的 ping 由浏览器自动回复。这里的定时发送是按间隔发一条普通文本消息,默认关闭。

为什么连不上 Socket.IO 服务?

选 Socket.IO 预设 Socket.IO 不是原生 WebSocket。选「Socket.IO v3/v4」预设:它会连 /socket.io/?EIO=4&transport=websocket,收到 open 包后回复 40,每收到 ping(2)就回 pong(3)。

什么是 WebSocket 在线测试工具?

WebSocket 在线测试工具就是一个网页版的 WebSocket 客户端:填入 ws:// 或 wss:// 地址,连接服务器,收发文本或二进制消息,看服务器回了什么。后端接口刚写好、Nginx 反代刚配完、设备只提供 WebSocket 接口时,不用写客户端代码,打开网页就能做 ws 在线测试。

本工具在你的浏览器里运行:连接由浏览器直接发往你填写的服务器,消息不经过 go-tools 的服务器。同时它也受浏览器限制:不能加自定义请求头,不能发协议层的 ping 帧,握手失败时浏览器只告诉网页关闭码 1006,不告诉原因。

和直接在浏览器控制台里 new WebSocket() 相比,它多做了这些:二进制消息按 HEX(或 Base64)显示,HEX / Base64 输入按真正的二进制消息发出;JSON 自动格式化;关闭码给出含义;连接失败时列出排查清单;地址可能被浏览器拦截时,连接前就提示;实测每秒约 2,000 条消息时日志依然流畅。

09:30:01.204 · Connecting to ws://localhost:8080/ws
09:30:01.219 · Connected · subprotocol: chat
09:30:02.517 → TXT 17 B {"type":"hello"}
09:30:02.531 ← TXT 25 B {"type":"hello","ok":true}
09:30:03.002 → BIN 4 B 48 69 00 FF
09:30:03.010 ← BIN 4 B 48 69 00 FF
09:30:09.880 · Closed · code 4001: application-defined code

WebSocket 在线测试工具的功能

本机和局域网:连接前按浏览器给出提示

连接前先检查地址:从本 HTTPS 页面连写成域名的 ws://(不加密)会被浏览器拦截,工具会直接提示并建议改用 wss://。连 localhost 或局域网 IP 时,提示 Chrome 会询问「访问本地网络」权限,以及 Firefox、Safari 的不同表现(截至 2026 年 10 月)。

二进制按 HEX 显示,真正按二进制发送

收到的二进制消息按 HEX 显示(每行 16 字节),也可切换成 Base64。输入 48 69 00 FF、0x48,0x69 或 Base64,发出的是二进制消息;非法字符、位数为奇数都会指出位置,发送前的字节预览就是实际发出的内容。

关闭码和失败信息看得懂

每次关闭都显示关闭码、原因文字、是否完成关闭握手;标准码 1000–1015 给出含义,4000–4999 标明是应用自定义码。连接在建立前就失败时,给出排查清单,而不是凭猜测下结论。

日志不卡,能搜索、能导出

消息每帧合并渲染一次,实测每秒约 2,000 条也不卡页面。每条记录方向、毫秒时间戳、类型和字节数。可按方向过滤、搜索、暂停显示、只保留最近 N 条,复制或导出为文本。

子协议、连接超时、Socket.IO 预设

可请求一个或多个子协议(逗号分隔),连上后显示服务器确认了哪一个。连接超时会结束服务器一直不回应的握手。Socket.IO 预设自动完成 Engine.IO v4 握手并回应 ping。

心跳和自动重连按需开启

定时发送按间隔重复发一条你设定的消息;自动重连在意外断开后按指数退避重试。两项默认关闭,工具不会发送任何你没要求发的消息。

ws在线测试示例:本地服务、二进制、关闭码、Socket.IO

ws在线测试:连本地开发服务器

ws://localhost:8080/ws
已连接
→ TXT 17 B {"type":"hello"}
← TXT 25 B {"type":"hello","ok":true}

Chrome 147 起会先询问是否允许访问本地网络,选「允许」即可;Firefox 能直接连 localhost;Safari 会拦截从本 HTTPS 页面发起的 ws:// 连接(截至 2026 年 10 月)。

用 HEX 发送二进制消息

48 69 00 FF
→ BIN 4 B 48 69 00 FF

HEX 模式下发出的是这 4 个字节组成的二进制消息,而不是「48 69 00 FF」这串文字。Base64 输入 SGkA/w== 发出的是同样的 4 个字节。

看懂服务器的关闭

服务器以关闭码 4001、原因「token expired」关闭连接
已关闭 · 关闭码 4001:应用自定义的关闭码 · 正常完成关闭握手
原因:token expired

4000–4999 由应用自己定义,4001 的含义要查服务端文档;1000–1015 是标准关闭码,日志里会直接给出含义。

连接 Socket.IO 服务

协议选 Socket.IO v3/v4,地址 ws://localhost:3000
正在连接 ws://localhost:3000/socket.io/?EIO=4&transport=websocket
← 0{"sid":"…","pingInterval":25000,…}
→ 40
← 40{"sid":"…"}

预设会补全 Socket.IO 的路径和参数,回复 40 加入默认命名空间,每收到 2 就回 3。发送事件写成 42["event","data"]。

WebSocket 在线测试怎么用

  1. 1

    填入服务器地址

    输入或粘贴 ws:// 或 wss:// 地址;http:// 和 https:// 会按 ws:// 和 wss:// 处理。留意地址下方的提示:浏览器可能拦截时会提前说明。

  2. 2

    需要时填写子协议

    有的服务器要求子协议,例如 mqtt。可以填一个或多个,用逗号分隔;连上后日志会显示服务器确认了哪一个。

  3. 3

    点「连接」

    在 Chrome 里连 localhost 或局域网地址时,弹出「访问本地网络」询问请选「允许」。连接失败时按出现的排查清单逐项检查。

  4. 4

    收发消息

    选择文本、HEX 或 Base64,确认预览后按 Ctrl+Enter 发送。收到的 JSON 自动格式化,二进制按 HEX 显示,可在日志工具栏切换为 Base64。

  5. 5

    过滤,然后复制或导出

    按方向过滤或搜索日志,消息刷屏时可暂停显示;最后把日志复制或导出为文本,带时间戳、方向和字节数。

WebSocket 连接常见错误

从 HTTPS 页面连写成域名的 ws://

浏览器会拦截 HTTPS 页面发起的、写成域名的不加密 ws:// 连接(混合内容)。Chrome 和 Firefox 会直接报 SecurityError。请改用 wss://;在 Chrome 里连局域网服务器,可以把地址写成 IP(需允许访问本地网络)。

✗ 错误
ws://api.example.com/ws
✓ 正确
wss://api.example.com/ws

在文本模式里输入 HEX

文本模式下,48 69 发出的是「4、8、空格、6、9」五个字符。要发送 0x48 0x69 两个字节的二进制消息,请切到 HEX 模式。

✗ 错误
文本模式:48 69 → TXT 5 B
✓ 正确
HEX 模式:48 69 → BIN 2 B

把 Socket.IO 地址当原生 WebSocket 连

Socket.IO 服务会拒绝根路径上的原生 WebSocket 连接;不回应它的握手和 ping,它也会断开连接。请使用 Socket.IO 预设。

✗ 错误
ws://localhost:3000
✓ 正确
ws://localhost:3000/socket.io/?EIO=4&transport=websocket

想用请求头传 token

浏览器发起 WebSocket 握手时不能带 Authorization 头。如果服务器支持,改用 URL 参数或子协议传 token。

✗ 错误
Authorization: Bearer eyJ…
✓ 正确
wss://api.example.com/ws?token=eyJ…

什么时候用在线 WebSocket 测试

后端接口自测
前端还没写,先确认新的 WebSocket 路由能连上,看它最先推送什么,以及收到异常输入时怎么处理。
排查 Nginx / 网关反代
放在 Nginx 或网关后面时,看升级请求是否转发成功,空闲连接能保持多久。
物联网与二进制协议
通过 WebSocket 传二进制的设备和消息代理,可以按 HEX 查看,并用 HEX 或 Base64 精确发送字节。
复现关闭码
看服务器实际发出的关闭码和原因,例如 token 过期、客户端被限流时。
高频推送时的显示
服务器每秒推约 2,000 条消息时(实测),页面依然流畅,并统计收发条数和字节数。

浏览器里的 WebSocket 连接原理

握手过程
WebSocket 连接以一个带 Upgrade: websocket 的 HTTP 请求开始。请求头由浏览器自己生成——Origin、Sec-WebSocket-Key、Sec-WebSocket-Version: 13,以及按子协议列表生成的 Sec-WebSocket-Protocol——网页不能添加别的头。服务器回 101 Switching Protocols 之后,双方开始收发消息。
文本消息与二进制消息
send() 传字符串发出 UTF-8 文本消息,传字节发出二进制消息。网页收到的是完整消息,看不到帧、分片和掩码。本工具把 binaryType 设为 arraybuffer,二进制消息按顺序到达并能按 HEX 显示。
为什么错误没有细节
WebSocket 规范禁止浏览器告诉脚本连接为什么失败——域名解析失败、端口被拒、证书错误、HTTP 401 在网页看来完全一样——以防网页借此探测你的内网。网页只能看到一个 error 事件和关闭码 1006(Firefox 会把证书错误报成 1015)。
混合内容与本地网络访问
HTTPS 页面不能连接公网主机的不加密 ws://。Chrome 147 起,WebSocket 也纳入「本地网络访问」:公网页面连本机或私有 IP 需要你授权。Firefox 对回环地址放行,Safari 不放行(截至 2026 年 10 月)。
关闭码
客户端主动关闭时只能用 1000 或 3000–4999,原因最长 123 字节(UTF-8)。1005(没有关闭码)和 1006(异常关闭)不会出现在网络上,是浏览器报告用的;1015 只有部分浏览器在 TLS 失败时报告。

WebSocket 测试技巧

本机以外一律用 wss://
证书受信任的 wss:// 在各浏览器里都能从本页连接公网服务器,也能保护 URL 里的 token;连本机或局域网时,Chrome 同样会先询问本地网络权限。不加密的 ws:// 留给 localhost。
握手失败先看控制台
网页只看得到 1006。Chrome 和 Edge 会在控制台打印 HTTP 状态码,通常能直接看出是鉴权、路径还是代理的问题。
在服务器上放行 Origin
浏览器总会发送 Origin。服务器校验 Origin 时,测试期间放行 https://go-tools.org;WebSocket 不走 CORS,加 CORS 头没有用。
让服务器发 ping
要让空闲连接穿过代理不被断开,请让服务器发 ping 帧,浏览器会自动回应。只有协议本身需要应用层消息时,才用定时发送。
分享日志前去掉 token
地址里常带 token。工具只把地址和消息放在内存里,但导出的日志和截图会包含它们,分享前请删掉敏感信息。

WebSocket 在线测试常见问题

能在这个 HTTPS 页面上测 ws://localhost 或局域网服务器吗?
取决于浏览器(截至 2026 年 10 月)。Chrome 147 起把连接本机或局域网的 WebSocket 视为「本地网络访问」:第一次会询问是否允许本网站,选「允许」后,ws://localhost、ws://127.0.0.1 以及写成 IP 的局域网地址(如 ws://192.168.1.10)都能连上。在 Chrome 里局域网服务器必须写成 IP 地址,写普通主机名(.local 除外)即使解析到内网也会被拦截。Firefox 能直接连 localhost,但会拦截局域网的 ws://。Safari 会拦截从 HTTPS 页面连接本机和局域网的 ws://。wss:// 不受混合内容限制:连公网服务器时,只要证书受信任,各浏览器都能从本页连接;连本机或局域网时,Chrome 同样会先询问本地网络权限。
为什么从本页连不上 ws://example.com?
本页通过 HTTPS 加载,浏览器会拦截 HTTPS 页面连接公网主机的不加密 ws://(混合内容)。Chrome 和 Firefox 会直接报 SecurityError,工具会显示出来。请改用服务器的 wss:// 地址。用纯 http 访问的公网网站没有这条限制,但在新版 Chrome 里它们反而完全连不了本机和局域网。
连接失败显示 1006,到底哪里出错了?
1006 只表示连接没有完成关闭握手就结束了。握手失败时,WebSocket 规范要求浏览器对网页隐藏原因——401、404、端口被拒、证书错误、Origin 被拒在网页看来完全一样(Firefox 会把证书错误报成 1015)——所以浏览器直连的网页工具都显示不了。按 F12 打开控制台,Chrome 和 Edge 会打印服务器返回的 HTTP 状态码。工具还会区分「连接建立前失败」和「连接后断开」,分别列出常见原因。
能加 Authorization 等自定义请求头吗?
不能。浏览器的 WebSocket API 不允许网页设置请求头,握手请求头由浏览器固定生成(包括 Origin,以及服务器所在网站自己的 Cookie)。常见替代办法,取决于服务器支持哪种:token 放在 URL 里,如 wss://host/ws?token=…;token 作为子协议传递(只能用 token 字符,JWT 可以,含 = 或 / 的标准 Base64 不行,而且服务器必须回选这个子协议);或者用 Cookie,但浏览器一般只对页面自己的网站可靠地发送 Cookie,从本页连你的服务器通常带不上。Postman 等工具能设置请求头,是因为它们不是浏览器。
为什么 Postman 能连、这里连不上?
Postman 和命令行客户端可以设置任意请求头,通常也不发送 Origin。浏览器不能加 Authorization 头,并且总会发送 Origin: https://go-tools.org。如果服务器要求请求头里的 token 或校验 Origin,就会拒绝浏览器的握手;请放行这个 Origin,或改用其他方式传 token。
心跳会发送 WebSocket 的 ping 帧吗?
不会。网页既不能发送、也看不到协议层的 ping/pong 帧;服务器发来 ping 时,浏览器会自动回 pong。这里的定时发送是按你设定的间隔发一条普通文本消息,例如 {"type":"ping"}。默认关闭,因为不认识这条消息的服务器可能会断开连接。要让空闲连接穿过代理不断开,请让服务器发 ping。
为什么连不上我的 Socket.IO 服务?
Socket.IO 是建立在 WebSocket 之上的协议,不是原生 WebSocket。Socket.IO v3/v4 服务要求路径 /socket.io/?EIO=4&transport=websocket,先发一个以 0 开头的 open 包,等客户端回复 40 加入默认命名空间;之后每次 ping(2)都要回 pong(3),否则就会断开。选「Socket.IO v3/v4」预设,这些都由工具完成;之后发送事件写成 42["event","data"]。只开启了 HTTP 长轮询的服务器不接受 WebSocket 连接。
连接大约一分钟后自动断开,为什么?
通常是反向代理的空闲超时。Nginx 默认 60 秒内没有数据就断开代理连接(proxy_read_timeout),网页看到的是关闭码 1006。可以调大超时,或让服务器定时发 ping 帧。经过 Nginx 时还要确认转发了升级请求:proxy_set_header Upgrade $http_upgrade; 和 proxy_set_header Connection "upgrade";(Nginx 1.29.7 之前还要写 proxy_http_version 1.1;)。
wss:// 用的是自签名证书,怎么连?
先在新标签页打开 https://同一主机:端口/,接受证书警告,再回来连接。浏览器会对这个主机和端口记住这个例外。这会降低浏览器的安全保护,只适合你自己的测试服务器。
怎么发送和查看二进制消息?
发送格式选 HEX 或 Base64。HEX 可以写成 48 69 00 FF、0x48,0x69 或 486900FF;预览会显示字节,非法字符或位数为奇数时会指出位置,不会发出去。收到的二进制消息按 HEX 显示(每行 16 字节),可在日志工具栏切换为 Base64。收到的 HEX 想看成文字,可以贴到16进制转字符串。
我的消息会经过 go-tools 的服务器吗?
不会。浏览器直接连接你填写的地址,消息不经过我们的服务器。点「连接」之前,工具不会发起任何 WebSocket 连接;地址和消息只保存在内存里,不写进页面网址,也不写进浏览器存储。和本站其他页面一样,本页会加载统计和广告脚本。
有可以拿来测试的服务器吗?
可以用「本地回显演示」:它在本页内运行,把你发的每条消息原样回显,不建立任何网络连接。也有 wss://echo.websocket.org/ 这类公共回显服务,但它们是第三方服务:可用性不保证,你的消息会发到该第三方。

cURL 命令生成器与构建工具

网络与 API

在浏览器中构建 curl 命令——设置请求方法、请求头、认证与请求体,即刻获得可复制的命令。支持 Bearer、POST JSON、文件上传预设。免费、隐私安全、无需注册。

htpasswd 生成器 — bcrypt、Apache MD5 (apr1) 与 Basic Auth

网络与 API

在线生成 htpasswd 条目,支持 bcrypt、Apache MD5 (apr1)、SHA-1 等算法,并输出 Apache、nginx 和 Docker 的即用配置。100% 在浏览器中运行,密码不上传。

Open Graph 与 Meta 标签生成器

网络与 API

生成 Open Graph、Twitter Card 与 SEO meta 标签,并实时预览在 Google、Facebook、X 上的分享效果。100% 免费、纯浏览器运行、无需注册——一键复制代码即可粘贴使用。

Nginx location 匹配规则测试器 — 为何是这个块

网络与 API

看清哪个 nginx location 块生效,其他块各自输在哪一步。免费在线 location 匹配规则与优先级测试器,支持 =、^~、~、~*,全程浏览器内运行。

在线串口调试助手(网页版串口调试工具)

网络与 API

免费免安装的串口调试助手在线版:GBK 中文自动识别、一键切换不乱码,HEX 收发自动加 Modbus CRC16,发送前预览每个字节。电脑版 Chrome、Edge 直连 CH340、CP2102、ESP32、Arduino,没有硬件也能用演示设备试。

IPv4 子网掩码计算器

网络与 API

输入 IP 或网段即可算出网络地址、广播地址、可用主机数、子网掩码与反掩码,还能拆分子网、复制 Cisco/华为配置。免费无需注册,浏览器本地运算不上传。