Repolode
joewalnes

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. 1

    在 macOS 上使用 Homebrew 安装

    brew install websocketd
  2. 2

    或从安装页面下载适用于你系统的单个可执行文件

  3. 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 数据每日更新。

相关项目