このプロジェクトについて

Centrifugoは、オープンソースでスケーラブルなリアルタイムメッセージングサーバーであり、WebSocket、HTTPストリーミング、Server-Sent Events(SSE)、GRPC、WebTransport(実験的)など、さまざまなトランスポートを介してオンラインユーザーにメッセージを配信するように設計されています。これは、クライアントがチャネルにサブスクライブし、バックエンドがシンプルなHTTPまたはGRPC APIを介して公開したメッセージを受信する、ユーザー向けのPUB/SUBモデルを実装しています。これにより、言語に依存せず、チャットアプリ、ライブコメント、マルチプレイヤーゲーム、リアルタイムダッシュボード、コラボレーションツール、AIストリーミング応答の構築に適しています。 主な機能は次のとおりです。 - **効率的なトランスポート**: WebSocket、HTTPストリーミング、SSE、GRPC、WebTransport。 - **スケーラビリティ**: 水平スケーリングのためのRedis(Redis ClusterやValkey、KeyDB、DragonflyDBなどの互換ストアを含む)、PostgreSQL、またはNatsの組み込みサポート。 - **シンプルなサーバーAPI**: バックエンド通信用のHTTPおよびGRPCエンドポイント。 - **非同期コンシューマー**: トランザクショナルアウトボックスおよびCDCパターンのためのPostgreSQLおよびKafkaコンシューマー。 - **柔軟な認証**: JWTベースまたはバックエンドリクエストによるプロキシのような認証。 - **リッチなサブスクリプションモデル**: ストリーム(クライアント/サーバーサイド)、マップ、共有ポーリング、プロキシサブスクリプションストリーム。 - **チャネル権限**: 名前空間の概念とさまざまな権限戦略。 - **メッセージ履歴とリカバリ**: 再接続時の自動リカバリを備えたホット履歴に加え、キャッシュリカバリモード。 - **デルタ圧縮**: 帯域幅を削減するためのFossilアルゴリズムに基づく。 - **プレゼンス**: 参加/退出通知付きのオンラインチャネルプレゼンス。 - **RPC**: リアルタイム接続を介してバックエンドにRPC呼び出しを送信。 - **クライアントプロトコル**: JavaScript、Dart/Flutter、Swift、Java、Python、Go、.NET(作業中)用の公式SDKを備えた厳格で効果的なプロトコル。 - **データ形式**: 最適化されたシリアライゼーションとバッチ処理を備えたJSONおよびバイナリProtobuf。 - **管理UI**: 監視とテストのための組み込みWebインターフェース。 - **可観測性**: Prometheusメトリクスと公式Grafanaダッシュボード。 Centrifugoは、Pubnub、Pusher、Ablyなどの商用サービスや、socket.ioやSignalRなどのフレームワークに対するセルフホストの代替として位置付けられています。一度セットアップすれば無期限に使用できるように設計されており、リアルタイムトランスポートをビジネスロジックから分離します。 Dockerでのクイックスタート: ```bash docker run -it --rm -p 8000:8000 centrifugo/centrifugo:latest centrifugo --client.insecure --admin.enabled --admin.insecure ``` 次に、http://localhost:8000を開いて管理UIにアクセスします。insecureフラグはローカル試用のみを対象としています。 本番環境では、公式ドキュメントサイト(centrifugal.dev)のインストールおよびクイックスタートガイドに従ってください。このプロジェクトは積極的にメンテナンスされており、TelegramおよびDiscordを介したコミュニティサポートがあります。