ローカルのTCPポートをリモートサーバー経由で公開する、Rust製のシンプルなCLIです。
joewalnes/websocketd
任意のSTDIN/STDOUTプログラムをWebSocketサーバーとして動かす、小さなCLIツール。WebSocket版inetdのように使えます。
- スター
- 17,459
- フォーク
- 1,009
- 未解決の Issue
- 1
- 最終コミット
- 2 か月前
これは何?
websocketdを使うと、ネットワーク処理のコードを書かずに、既存のコマンドラインプログラムをWebSocket経由で公開できます。クライアントが接続するとプログラムを起動し、受信した各メッセージを改行付きでプログラムのSTDINに渡します。プログラムがSTDOUTに出力した各行は、WebSocketメッセージとしてクライアントに返します。接続が閉じると、プロセスを終了します。
インターフェースは標準ストリームだけなので、同じスクリプトをターミナルやシェルパイプライン、WebSocketエンドポイントとしてそのまま実行できます。Linux、macOS、Windows向けに、単一の実行ファイルとして配布されています。WebSocketサーバー機能に加えて、静的ファイルサーバーとCGIサーバーを備え、リクエストの内容を示すCGI環境変数を公開します。また、ブラウザー上でフレームをテストできる開発者向けコンソールも内蔵しています。
Unixドメインソケットでの待ち受け、JSON形式のタグ付きでのSTDERR転送(任意)、クライアント切断時のプロセスグループ全体の終了にも対応しています。
主な機能
- 01STDINを読み取り、STDOUTに書き込む任意のプログラムをWebSocketエンドポイントとして動かせます。
- 02外部依存なしで、Linux、macOS、Windows向けの単一の実行ファイルとして提供されます。
- 03CGI環境変数を使って、HTTPリクエストの詳細をスクリプトに渡します。
- 04静的ファイルサーバーと従来型のCGIサーバーを内蔵しています。
- 05TCPまたはUnixドメインソケットで待ち受けでき、STDERRの転送も任意で有効にできます。
- 06フレームの送信や確認に使える、開発者向けコンソールを内蔵しています。
ユースケース
- 既存のシェルスクリプトやCLIツール用のブラウザーフロントエンドを試作する。
- ログやvmstatの統計情報など、システムの出力をWebダッシュボードにリアルタイムで配信する。
- コマンドラインインタープリターを手軽にブラウザベースのREPLとして使えるようにする。
- JavaScriptクライアントを書く前に、スクリプトのWebSocketメッセージ処理をテストする。
クイックスタート
- 1
Homebrewを使ってmacOSにインストールする
brew install websocketd - 2
または、インストールページからお使いのOS向けの単体実行ファイルをダウンロードする
- 3
count.shなどのスクリプトを保存し、ポート8080でWebSocketサーバーとして実行する
websocketd --port=8080 ./count.sh
使う前に知っておきたいこと
- Homebrewによるインストールが1行で済むのはmacOSのみです。それ以外のシステムでは手動でダウンロードする必要があります。
トピック
よくある質問
- websocketd とは?
- 任意のSTDIN/STDOUTプログラムをWebSocketサーバーとして動かす、小さなCLIツール。WebSocket版inetdのように使えます。 websocketdを使うと、ネットワーク処理のコードを書かずに、既存のコマンドラインプログラムをWebSocket経由で公開できます。クライアントが接続するとプログラムを起動し、受信した各メッセージを改行付きでプログラムのSTDINに渡します。プログラムがSTDOUTに出力した各行は、WebSocketメッセージとしてクライアントに返します。接続が閉じると、プロセスを終了します。
- websocketd は無料で使えますか?ライセンスは?
- websocketd は BSD-2-Clause ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- websocketd は今もメンテナンスされていますか?
- 半年以内に更新あり。websocketd の最終コミットは 2026年9月7日 です。
- websocketd は何に使えますか?
- 既存のシェルスクリプトやCLIツール用のブラウザーフロントエンドを試作する。 ログやvmstatの統計情報など、システムの出力をWebダッシュボードにリアルタイムで配信する。 コマンドラインインタープリターを手軽にブラウザベースのREPLとして使えるようにする。 JavaScriptクライアントを書く前に、スクリプトのWebSocketメッセージ処理をテストする。
- websocketd のインストール方法は?
- Homebrewを使ってmacOSにインストールする: brew install websocketd または、インストールページからお使いのOS向けの単体実行ファイルをダウンロードする count.shなどのスクリプトを保存し、ポート8080でWebSocketサーバーとして実行する: websocketd --port=8080 ./count.sh
- websocketd はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/joewalnes/websocketd
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
Nettyに似た、高性能なプロトコルサーバーやクライアントを構築するための、Swift製クロスプラットフォーム非ブロッキング・イベント駆動ネットワークフレームワーク。
複数のネットワークアダプター(Ethernet、Wi-Fi、ホットスポット、USBテザリング)にダウンロード通信を分散するWindows向けツール。
HTTP/1、HTTP/2、WebSocketの通信を調査できる、コンソール・コマンドライン・Webインターフェースを備えたTLS対応の対話型HTTPプロキシ。
Node.jsでWebアプリやHTTP APIを構築するための、高速で自由度の高いミニマルなWebフレームワーク。
TypeScriptまたはJavaScriptで、効率的かつスケーラブルなサーバーサイドアプリケーションを構築するための、進化型Node.jsフレームワークです。