Repolode
LockGit

LockGit/gochat

純粋なGoで書かれた軽量なインスタントメッセージングバックエンド。WebSocketとTCPでの個人間メッセージやルーム内ブロードキャストに対応します。

スター
2,937
フォーク
475
未解決の Issue
30
最終コミット
2 か月前

これは何?

gochatは、純粋なGoで実装されたインスタントメッセージングシステムです。1対1のプライベートメッセージと、チャットルーム内でのブロードキャストに対応しており、各レイヤーはRPCで通信するため、水平スケールできます。

クライアントはWebSocketまたはTCPで接続でき、異なる接続方式間でもメッセージをやり取りできます。サービスの相互検出にはetcdを使い、Redisをメッセージキューおよびストレージ層として利用します。デモ構成ではユーザーデータにsqlite3とGORMを使用しており、別のリレーショナルデータベースやKafka、RabbitMQなどのより高機能なキューに置き換えることもできます。

プロジェクトはapi、connect、logic、task、siteの各モジュールに分かれており、それぞれを単一のバイナリで個別に起動します。Dockerの構成と起動スクリプトを使えば、依存サービスとデモ用チャットルームを立ち上げられます。また、TypeScriptとReactで作られたフロントエンドも別途用意されています。

主な機能

  • 01プライベートメッセージとルーム内ブロードキャスト
  • 02WebSocketとTCPでのクライアント接続、およびプロトコルをまたいだメッセージ配信
  • 03etcdによるサービス検出とレイヤー間のRPC通信
  • 04KafkaやRabbitMQに置き換え可能なRedisベースのメッセージキュー
  • 05依存サービスとデモをワンコマンドで起動できるDocker構成

ユースケース

  • 水平スケール可能なGo製チャットサーバーの構成を学ぶ
  • 社内チャットやメッセージング機能のプロトタイプを作る
  • 既存のビジネスロジックを基盤に、独自のIMバックエンドを構築する

クイックスタート

  1. 1

    リポジトリをクローンする

    git clone git@github.com:LockGit/gochat.git
  2. 2

    付属のスクリプトを使って Docker でデモを起動する(ローカルアドレス)

    cd gochat && sh run.sh dev 127.0.0.1
  3. 3

    ブラウザーで http://127.0.0.1:8080 を開いてチャットルームに入る

使う前に知っておきたいこと

  • Docker を使わない場合は、etcd と Redis が必要で、複数モジュールを手動で起動する必要があります。
  • メッセージはデータベースに保存されず、キューを介して中継されるだけです。
  • README によると、サンプルデモでは TCP チャネルは有効になっていません。

収録されている特集

トピック

よくある質問

gochat とは?
純粋なGoで書かれた軽量なインスタントメッセージングバックエンド。WebSocketとTCPでの個人間メッセージやルーム内ブロードキャストに対応します。 gochatは、純粋なGoで実装されたインスタントメッセージングシステムです。1対1のプライベートメッセージと、チャットルーム内でのブロードキャストに対応しており、各レイヤーはRPCで通信するため、水平スケールできます。
gochat は無料で使えますか?ライセンスは?
gochat は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
gochat は今もメンテナンスされていますか?
半年以内に更新あり。gochat の最終コミットは 2026年9月1日 です。
gochat は何に使えますか?
水平スケール可能なGo製チャットサーバーの構成を学ぶ 社内チャットやメッセージング機能のプロトタイプを作る 既存のビジネスロジックを基盤に、独自のIMバックエンドを構築する
gochat のインストール方法は?
リポジトリをクローンする: git clone git@github.com:LockGit/gochat.git 付属のスクリプトを使って Docker でデモを起動する(ローカルアドレス): cd gochat && sh run.sh dev 127.0.0.1 ブラウザーで http://127.0.0.1:8080 を開いてチャットルームに入る
gochat はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/LockGit/gochat

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト