goch Go で書かれた自己ホスト型ライブチャット サーバーです。
これにより、独自のインフラストラクチャ上でライブチャット ソフトウェアを実行できるようになります。
2 人以上のユーザーが同時に参加できる複数のプライベートおよびパブリック チャットルームを作成できます。
通信には、RESTful エンドポイント、Websocket、NATS ストリーミング、および Redis を使用します。
goch Gossip のフォークであり、多くの追加機能と修正が加えられています。
gochローカルで実行するには、 docker
、 docker-compose
、 go
をインストールしてパスに設定する必要があります。プロジェクトをダウンロード/クローン作成した後、 ./up
を実行してバイナリをコンパイルし、 goch 、NATS Streaming、および Redis を使用して docker-compose を実行します。エラーがなければ、 gochローカルホスト (ポート 8080) で実行されているはずです。
サーバーを実行するには、 ADMIN_USERNAME
およびADMIN_PASSWORD
環境変数を設定する必要があります。リポジトリでは、これらはそれぞれadmin
とpass
に設定されていますが、明らかにセキュリティ上の理由からこれらを変更する必要があります。
サーバーが実行されると、次のルートが使用可能になります。
POST /admin/channels
: 新しいチャネルを作成します。チャネルに一意の名前 (通常は ID) を指定する必要があり、応答には後でチャネルに接続するために使用されるチャネルのシークレットが含まれます。このエンドポイントは、提供された管理者資格情報を使用してサーバー側で呼び出す必要があります。後でチャネルに接続するために、応答を保存する必要があります。
POST /register
: ユーザーをチャンネルに登録します。チャネルに登録するには、UID、DisplayName、ChannelSecret、および ChannelName を指定する必要があります。オプションでユーザー シークレットを指定する必要がありますが、そうでない場合はサーバーが生成して返します。
GET /connect
: チャットに接続し、チャット履歴とともに WebSocket 接続を返します。チャネル、UID、およびシークレットを指定する必要があります。オプションで LastSeq を指定すると、LastSeq (UNIX タイムスタンプ) の後にのみチャット履歴が返されます。
残りのルートは「ヘルパー」としてのみ使用されます。
GET /channels/{name}?secret=$SECRET
: チャンネル内のメンバーのリストを返します。チャネル名は URL パラメータとして、チャネル シークレットはクエリ パラメータとして指定する必要があります。
GET /admin/channels
: 利用可能なすべてのチャネルのリストを返します。
GET /admin/channels/{name}/user/{uid}
: ユーザーのチャットの未読メッセージのリストを返します。
goch MIT ライセンスに基づいてライセンスされています。詳細については、LICENSE ファイルを確認してください。
エミール・リビッチ