跳到正文

WebSocket 测试

WebSocket Tester

打开一条 WebSocket 连接,发送你自己写的帧,并把收到的一切带时间记录下来。

从你的浏览器向你指定的服务器打开一个 WebSocket,发送你输入的内容,把两个方向的每一帧连同时间记录下来。连接是浏览器自己建立的——什么都不经过我们的服务器,所以你机器上的开发端点和公网端点用起来一样。

🔒 完全在你的浏览器里运行websockettestrealtimedebug

连接是浏览器自己建立的。地址,以及发送和接收的内容,都不经过我们的服务器。

这个页面走的是 https,所以浏览器会把明文的 ws:// 当作混合内容拦下来。请改用 wss://,或者在本地 http 下打开你的开发服务器。

用逗号分隔。它会放进 Sec-WebSocket-Protocol 头字段里提出,由服务器挑一个。

浏览器只能发 1000 或 3000–4999(RFC 6455 §7.4)。

空闲

发送

日志

收到的帧是 ▼,发出的是 ▲。时间从第一条记录开始算。

还什么都没有。

  • 浏览器的 WebSocket API 自己发不了 ping 和 pong 帧,也加不上自定义头字段。需要认证时,惯例是把令牌放在第一条消息里、URL 查询串里,或者作为 subprotocol 传。

怎么用

  1. 输入一个 wss:// 地址

    这个页面通过 https 提供,所以浏览器把明文 ws:// 当作混合内容拦下。可以顺带提出子协议;服务器选一个,日志会写明选了哪个。

  2. 发一帧

    合法的 JSON 在发送前压成一行,所以粘贴进来的格式化消息会按客户端会发的样子发出。不是 JSON 的内容按输入原样发出。

  3. 按方向和时间读日志

    收到的帧是 ▼,发出的是 ▲,事件是 ●,每一条都盖着自第一条起的经过时间。这就是区分一台从不应答的服务器和一台应答很慢的服务器的方法。

  4. 需要时带上关闭码

    浏览器只能发送 1000 或 3000–4999(RFC 6455 §7.4),所以你自己的码要放在应用定义的那个区间。返回的关闭码会用文字解释。

常见问题

能加 Authorization 头吗?

从浏览器不能——WebSocket API 根本不允许自定义头。惯例是把令牌放进第一条消息、URL 查询串,或者塞进子协议;用哪一种由服务器决定。

它以 1006 关闭了,没有原因

1006 表示连接在没有关闭帧的情况下断了——服务器崩溃、代理超时,或握手被拒绝。浏览器出于安全考虑刻意不给原因,所以答案在服务器日志里,不在这里。

能发 ping 帧吗?

不能。浏览器自动应答 ping,不给页面任何发送 ping 的办法。需要心跳的应用发一条普通消息,靠服务器回复。

我的流量经过你们的服务器吗?

不经过。浏览器直接连接,所以地址和每一帧都只在你和那台服务器之间。这也意味着 localhost 端点在这里能用,服务器端的测试器永远够不到那里。

可以从这些接进来

接下来

这些工具吃得下当前工具的产出,结果可以直接送过去。