太好使了~,命令行玩转WebSocket,websocat真香
2026/6/10 19:05:08 网站建设 项目流程

文章目录

  • 太好使了~,命令行玩转WebSocket,websocat真香

太好使了~,命令行玩转WebSocket,websocat真香

websocat 是一个用 Rust 写的命令行 WebSocket 工具,目前在 GitHub 上拿到了 8504 个 Star。它的定位很直接:做 WebSocket 领域的 netcat、curl 和 socat,把 WebSocket 的调试和对接拉回到命令行,跟管线和脚本打配合。

如果你经常在终端里调试 WebSocket 接口,或者想在脚本里自动化处理 WebSocket 连接,每次都要打开 Postman 或者现写一段 Python 代码有点折腾。websocat 把这些操作浓缩成了简单的命令行参数,一行就能搞定。

客户端和服务端通吃

websocat 既能当 WebSocket 客户端去连接远端服务,也能在本地启动一个 WebSocket 服务器。作为客户端,直接指定 ws:// 或 wss:// 地址就能在终端里收发消息:

websocat ws://ws.vi-server.org/mirror

作为服务端,一行命令即可在指定端口上启动监听:

websocat-s1234

更有用的是它的"高级模式":同时指定两个地址,把数据从一端导向另一端。比如,把本地的 TCP 服务通过 WebSocket 暴露出去:

websocat--binaryws-l:127.0.0.1:8080 tcp:127.0.0.1:5678

或者反过来,把远端的 WebSocket 服务转成本地的 TCP 端口。这种桥接能力在网络环境受限、需要通过 HTTP 端口穿透的场景里很有用。

几十种地址类型和叠加层

websocat 的设计思路和 socat 一脉相承,提供了多种地址类型和叠加层(overlay)。地址类型决定了数据的来源和去向:TCP、UDP、UNIX socket、文件读写、标准输入输出、外部程序、甚至 Chromium 的远程调试协议,都可以作为数据的出入口。

叠加层则在传输链路上做加工。TLS 加密和解密、自动断线重连、JSON RPC 格式化、消息广播、按分隔符拆分行、长度前缀帧格式、日志记录、SOCKS5 代理,这些都有对应的 overlay 可以选用。

举个例子,通过管道往 Chrome DevTools 协议发指令,打开指定网页:

echo'Page.navigate {"url":"https://example.com"}'|websocat-n1--jsonrpcws://127.0.0.1:9222/devtools/page/...

搭建一个消息广播也只需要一行:

websocat-tws-l:127.0.0.1:1234 broadcast:mirror:

所有连上这个地址的客户端,任意一个发出的消息都会被广播给其余所有人。-t参数用来指定发送文本帧。

安装

macOS 用户直接用 Homebrew 或 MacPorts 安装:

brewinstallwebsocat

FreeBSD 也有官方包:

pkginstallwebsocat

Linux 用户可以从 Releases 页面下载预编译的二进制文件,或者通过 Rust 的 cargo 从源码编译:

cargoinstallwebsocat

Websocat 还提供了 Docker 镜像:

dockerrun--rm-tighcr.io/vi/websocat:nightly wss://ws.vi-server.org/mirror

工具本身是单文件二进制,依赖极少。Windows、macOS、Linux 三个平台都有预编译包,部署几乎没有额外成本。

适用场景

调试 WebSocket 接口、在 CI/CD 流程里自动发送 WebSocket 消息、搭建 WebSocket 到 TCP 的双向桥接、配合 Nginx 做反向代理、在物联网设备之间收发消息,只要涉及 WebSocket 通信,websocat 基本都能派上用场。

它不是什么大而全的重型框架,而是 Unix 哲学里那种专心做好一件事的小工具。跟管道、shell 脚本、systemd 服务组合使用时,灵活度很高。

都能派上用场。

它不是什么大而全的重型框架,而是 Unix 哲学里那种专心做好一件事的小工具。跟管道、shell 脚本、systemd 服务组合使用时,灵活度很高。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询