一个用 Rust 编写的极简命令行工具,可将本地 TCP 端口通过远程服务器暴露到公网。
joewalnes/websocketd
一个命令行工具,可把任意读写 STDIN/STDOUT 的程序封装成 WebSocket 服务。
- Star
- 17,459
- Fork
- 1,009
- 未关闭 Issue
- 1
- 最近提交
- 2个月前
这是什么?
websocketd 可以把现有的命令行程序通过 WebSocket 对外提供服务,无需编写任何网络代码。客户端连接时,它会启动对应程序,把收到的每条消息加换行符写入程序的 STDIN;程序每输出一行到 STDOUT,就作为一条 WebSocket 消息发回客户端。连接断开后,对应进程随之关闭。
由于接口只是标准输入输出,同一个脚本既能在终端或 shell 管道中运行,也能直接作为 WebSocket 端点使用。项目提供适用于 Linux、macOS 和 Windows 的单个可执行文件。除 WebSocket 服务外,它还内置静态文件服务器和 CGI 服务器,并通过 CGI 环境变量提供请求信息,另有可在浏览器中调试帧的开发者控制台。
它支持监听 Unix 域套接字,可选将 STDERR 以 JSON 标记后转发给客户端,客户端断开时会终止整个进程组。
核心功能
- 01将任何读取 STDIN、写入 STDOUT 的程序封装为 WebSocket 端点。
- 02提供适用于 Linux、macOS 和 Windows 的单文件可执行程序,无外部依赖。
- 03通过 CGI 环境变量向脚本传递 HTTP 请求信息。
- 04内置静态文件服务器和经典 CGI 服务器。
- 05可监听 TCP 或 Unix 域套接字,并可选择转发 STDERR。
- 06提供内置开发者控制台,用于发送和查看帧。
适用场景
- 为现有的 shell 脚本或命令行工具快速搭建浏览器前端原型。
- 将日志或系统统计等实时输出推送到网页仪表盘。
- 基于命令行解释器快速构建浏览器内的 REPL。
- 在编写 JavaScript 客户端前,用脚本测试 WebSocket 消息处理。
快速上手
- 1
在 macOS 上使用 Homebrew 安装
brew install websocketd - 2
或从安装页面下载适用于你系统的单个可执行文件
- 3
保存脚本 count.sh 并在 8080 端口上以 WebSocket 服务器方式运行
websocketd --port=8080 ./count.sh
使用前须知
- 通过 Homebrew 安装的一行命令仅适用于 macOS,其他系统需要手动下载。
收录于专题
标签
常见问题
- websocketd 是什么?
- 一个命令行工具,可把任意读写 STDIN/STDOUT 的程序封装成 WebSocket 服务。 websocketd 可以把现有的命令行程序通过 WebSocket 对外提供服务,无需编写任何网络代码。客户端连接时,它会启动对应程序,把收到的每条消息加换行符写入程序的 STDIN;程序每输出一行到 STDOUT,就作为一条 WebSocket 消息发回客户端。连接断开后,对应进程随之关闭。
- websocketd 可以免费使用吗?用的什么许可证?
- websocketd 以 BSD-2-Clause 许可证开源。用于商业产品前,请先确认许可证条款。
- websocketd 还在维护吗?
- 半年内有更新。websocketd 最近一次提交是在 2026年9月7日。
- websocketd 适合用来做什么?
- 为现有的 shell 脚本或命令行工具快速搭建浏览器前端原型。 将日志或系统统计等实时输出推送到网页仪表盘。 基于命令行解释器快速构建浏览器内的 REPL。 在编写 JavaScript 客户端前,用脚本测试 WebSocket 消息处理。
- websocketd 怎么安装和运行?
- 在 macOS 上使用 Homebrew 安装: brew install websocketd 或从安装页面下载适用于你系统的单个可执行文件 保存脚本 count.sh 并在 8080 端口上以 WebSocket 服务器方式运行: websocketd --port=8080 ./count.sh
- 在哪里获取 websocketd?
- 源代码和安装说明在 GitHub 上:https://github.com/joewalnes/websocketd
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
用 Swift 编写的跨平台非阻塞事件驱动网络框架,用于构建高性能协议服务端与客户端。
面向 Windows 的多网卡聚合与分流工具,可将有线、Wi-Fi、热点等连接同时用于下载。
一款支持 TLS 的交互式拦截 HTTP 代理,提供终端、命令行和 Web 三种界面,用于查看 HTTP/1、HTTP/2 和 WebSocket 流量。
面向 Node.js 的快速、极简网络框架,用于构建 Web 应用和 HTTP API。
一个面向 TypeScript 和 JavaScript 的渐进式 Node.js 服务端框架,用于构建高效、可扩展的应用。