Repolode
lxzan

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

    Goでライブラリをインストールします

    go get -v github.com/lxzan/gws@latest
  2. 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 の数値は毎日更新されます。

関連プロジェクト