- 簡単で、高速かつ安定しており、バッテリー効率にも優れたオープンなソリューション
- Webブラウザーおよびその他のHTTPクライアントにデータ更新をプッシュ
- 特に、Web APIを通じて提供されるリソースの非同期/リアルタイム更新を、リアクティブWebやモバイルアプリで表示するのに有用
- 純粋なHTTPベース : HTTP/2以上のプロトコルを活用して双方向通信をサポート
- 高速な応答時間と低レイテンシ
- 追加インストールなしで、あらゆる環境においてブラウザー互換性を提供
- シンプルなパブリッシュとサブスクライブ
- パブリッシュ(Publish): 単純なPOSTリクエストで処理
- サブスクライブ(Subscribe): Server-Sent-Events(SSE)を通じてリアルタイム更新を受信
- 接続が切れた場合の自動再接続と、欠落したメッセージの再要求をサポート
- RESTful APIおよびGraphQL向けに設計
- JWT認証によるプライベートアップデートを提供
- ユーザーの接続状態を確認できるPresence APIを提供。購読およびイベント状態の追跡が可能
- イベントストア: 発生したイベントを保存および管理可能
- PHPおよびその他のサーバーレスアーキテクチャと互換性あり
- データの完全な保護のためのE2EE(End-to-End Encryption)を提供
- 本番環境で利用可能なレベルのMercure Hubリファレンス実装を提供
- すべてのGoアプリケーションで、ハブなしにMercureプロトコルを直接実装するために使えるライブラリと公式Dockerイメージも提供
2件のコメント
SSEベースだと単方向通信なのか、それともWebSocketのように双方向通信をサポートしているのか気になりますね! 😮
ひとまず自分なりに調べた限りでは、単方向通信(サーバー→クライアント)だけをサポートしているようですが... 🥺
https://medium.com/@sirajul.anik/…
同じ方が作った FrankenPHP には Mercure の実装が組み込まれています。
https://ja.news.hada.io/topic?id=15103
リアルタイムハブを提供するという点では、代替になり得る Pushpin もあります。
https://ja.news.hada.io/topic?id=11377
Mercure より Pushpin のほうが直感的だったので(笑... Mercure のドキュメントを読むのがあまりにも面倒でした)、以前は Pushpin を使ってサイドプロジェクトを進めましたが、次はこの子を使ってみたいですね。