Repolode
joewalnes

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

    Homebrewを使ってmacOSにインストールする

    brew install websocketd
  2. 2

    または、インストールページからお使いのOS向けの単体実行ファイルをダウンロードする

  3. 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 の数値は毎日更新されます。

関連プロジェクト