任意のSTDIN/STDOUTプログラムをWebSocketサーバーとして動かす、小さなCLIツール。WebSocket版inetdのように使えます。
lxzan/gws
Go向けの軽量なイベント駆動型WebSocketサーバー/クライアントライブラリ。permessage-deflateに対応し、TCP、KCP、Unixソケットで利用できます。
- スター
- 1,808
- フォーク
- 122
- 未解決の Issue
- 0
- 最終コミット
- 先月
これは何?
GWS (Go WebSocket) は、OnOpen、OnMessage、OnClose、OnPing、OnPongのコールバックを備えた小さなイベントインターフェースを中心に設計された、Go向けのWebSocketライブラリです。各接続は専用のgoroutineでイベントループを実行するため、プロトコルの詳細を意識せず、アプリケーションコードをビジネスロジックに集中させられます。
基本APIに加えて、複数の接続へ配信するフレームを一度だけ圧縮するBroadcaster、ウィンドウサイズを設定できるpermessage-deflateのcontext takeover、SOCKS5またはHTTPプロキシ経由の接続に使えるDialerフックを備えています。また、KCPとUnixドメインソケットでも動作し、ノンブロッキングの非同期書き込み、ファイルのセグメント書き込みに対応しています。メッセージの読み取りにはReadLoop、ReadMessage、NextReaderを選べます。
RFC 6455とRFC 7692への準拠を目指しており、Autobahnテストスイートに合格したと報告されています。ゲートウェイ、チャット、ゲーム、プッシュサービスなど、多数の長時間接続を維持するサーバーを想定しています。
主な機能
- 01OnOpen、OnMessage、OnClose、OnPing、OnPongのコールバックを使ったイベント駆動型API。
- 02複数の接続への配信時に、メッセージを一度だけ圧縮するBroadcaster。
- 03context takeoverとスライディングウィンドウサイズの設定に対応したpermessage-deflate。
- 04カスタムDialerを使った、SOCKS5またはHTTPプロキシ経由の接続。
- 05TCP、KCP、Unixドメインソケットで動作。
- 06非同期のノンブロッキング書き込みと、ファイルのセグメント書き込み。
ユースケース
- Goでリアルタイムチャットやインスタントメッセージングのバックエンドを構築する。
- 多数の長時間接続を維持するAPIゲートウェイやハブを運用する。
- ブラウザーやアプリのクライアントにライブ更新やpub/subメッセージをプッシュ配信する。
- SOCKS5プロキシ経由で接続するWebSocketクライアントを作成する。
クイックスタート
- 1
Goでライブラリをインストールします
go get -v github.com/lxzan/gws@latest - 2
Quick Startのコードを記述したmain.goを作成し、ポート6666でサーバーを実行します
使う前に知っておきたいこと
- Go 1.18以降が必要です。
トピック
よくある質問
- gws とは?
- Go向けの軽量なイベント駆動型WebSocketサーバー/クライアントライブラリ。permessage-deflateに対応し、TCP、KCP、Unixソケットで利用できます。 GWS (Go WebSocket) は、OnOpen、OnMessage、OnClose、OnPing、OnPongのコールバックを備えた小さなイベントインターフェースを中心に設計された、Go向けのWebSocketライブラリです。各接続は専用のgoroutineでイベントループを実行するため、プロトコルの詳細を意識せず、アプリケーションコードをビジネスロジックに集中させられます。
- gws は無料で使えますか?ライセンスは?
- gws は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- gws は今もメンテナンスされていますか?
- 半年以内に更新あり。gws の最終コミットは 2026年9月11日 です。
- gws は何に使えますか?
- Goでリアルタイムチャットやインスタントメッセージングのバックエンドを構築する。 多数の長時間接続を維持するAPIゲートウェイやハブを運用する。 ブラウザーやアプリのクライアントにライブ更新やpub/subメッセージをプッシュ配信する。 SOCKS5プロキシ経由で接続するWebSocketクライアントを作成する。
- gws のインストール方法は?
- Goでライブラリをインストールします: go get -v github.com/lxzan/gws@latest Quick Startのコードを記述したmain.goを作成し、ポート6666でサーバーを実行します
- gws はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/lxzan/gws
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
ws://、wss://接続向けの、netcat、curl、socatのように使えるコマンドラインWebSocketクライアント兼サーバー。
Lilaは、無料・広告なし・オープンソースのオンラインチェスプラットフォームlichess.orgを支えるScala製サーバーです。
複数のネットワークアダプター(Ethernet、Wi-Fi、ホットスポット、USBテザリング)にダウンロード通信を分散するWindows向けツール。
長時間稼働するTCP、UDP、HTTP、WebSocketサービスの構築に使える、イベント駆動型ネットワークエンジンとコルーチンランタイムを提供するPHP拡張です。
Nettyに似た、高性能なプロトコルサーバーやクライアントを構築するための、Swift製クロスプラットフォーム非ブロッキング・イベント駆動ネットワークフレームワーク。