websocat
是WebSockets
的命令行客户端,例如 ws://
的 netcat
(或 curl
),具有类似 socat
的高级功能。
我们在调试WebSockets
的时候,能够轻松的像是在调试http
一样。
安装
有多种安装 WebSocat
的选项。
-
如果您使用的是
Fedora
,则可以从Copr
安装WebSocat :sudo dnf copr enable atim/websocat -y && sudo dnf install websocat
-
如果您使用的是
FreeBSD
,则可以使用以下命令安装WebSocat:pkg install websocat
。 -
如果您使用的是 macOS,则可以执行以下操作:
brew install websocat
使用
连接到公共回显服务器
$ websocat ws://ws.vi-server.org/mirror
123
123
ABC
ABC
服务和连接
A$ websocat -s 1234
Listening on ws://127.0.0.1:1234/
ABC
123
B$ websocat ws://127.0.0.1:1234/
ABC
123
使用远程调试在 Chromium 中打开一个选项卡。
$ chromium --remote-debugging-port=9222&
$ curl -sg http://127.0.0.1:9222/json/new | grep webSocketDebuggerUrl | cut -d'"' -f4 | head -1
ws://127.0.0.1:9222/devtools/page/A331E56CCB8615EB4FCB720425A82259
$ echo 'Page.navigate {"url":"https://example.com"}' | websocat -n1 --jsonrpc --jsonrpc-omit-jsonrpc ws://127.0.0.1:9222/devtools/page/A331E56CCB8615EB4FCB720425A82259
{"id":2,"result":{"frameId":"A331E56CCB8615EB4FCB720425A82259","loaderId":"EF5AAD19F2F8BB27FAF55F94FFB27DF9"}}
代理 TCP 连接到 WebSocket 连接并返回。
$ websocat --oneshot -b ws-l:127.0.0.1:1234 tcp:127.0.0.1:22&
$ websocat --oneshot -b tcp-l:127.0.0.1:1236 ws://127.0.0.1:1234/&
$ nc 127.0.0.1 1236
SSH-2.0-OpenSSH_7.4p1 Debian-10+deb9u3
qwertyu
Protocol mismatch.
在连接的 WebSocket 客户端之间广播所有消息
A$ websocat -t ws-l:127.0.0.1:1234 broadcast:mirror:
B$ websocat ws://127.0.0.1:1234
C$ websocat ws://127.0.0.1:1234