公式パッケージ · フレームワーク
Mercure hub なしで Symfony UX Turbo Streams
Doctrine の #[Broadcast] エンティティ、Turbo Streams、Symfony Messenger が Hibira 経由で更新を送り、ブラウザは WebSocket で受け取ります。Mercure hub の運用は不要です。
hibira-io/symfony-bundlePackagist ↗GitHub ↗
- #[Broadcast]、turbo_stream_listen()、turbo_stream_from() は Mercure と同じように使え、トランスポート名は hibira です。
- 更新はすべて Messenger のメッセージなので、非同期ワーカーに送らせればネットワークが遅くてもリクエストは遅くなりません。
- 独自のプライベート/プレゼンスチャンネルへの署名、Webhook の検証、プッシュ通知トークンの発行もできます。Symfony 6.4、7、8、UX Turbo 2 と 3 に対応。
サインインすると、コード例にご自身のクラスターホストが入ります。 サインイン
インストール
composer require hibira-io/symfony-bundle # .env.local HIBIRA_APP_ID=YOUR_APP_ID HIBIRA_APP_KEY=YOUR_APP_KEY HIBIRA_APP_SECRET=YOUR_APP_SECRET php bin/console hibira:check設定する
use Symfony\UX\Turbo\Attribute\Broadcast; class Message { // ... }使う
{# templates/broadcast/Message.stream.html.twig #} {% block create %} <turbo-stream action="append" target="messages"> <template>{{ include('message/_message.html.twig', { message: entity }) }}</template> </turbo-stream> {% endblock %} {# the page #} <ul id="messages" {{ turbo_stream_listen('App\\Entity\\Message') }}></ul>
始める前に
- アプリのシークレットは、アプリの作成時とシークレットのローテーション時に一度だけ表示されます。サーバーにだけ置き、ブラウザやゲームのビルドには入れないでください。
- Free プランでは、ページを読み込むすべてのオリジンをアプリの許可オリジンに登録してください(開発中は http://localhost:3000、その後は自分のドメイン)。"*" は有料プランで使えます。
ダッシュボードのアプリキーを使ってください。シークレットはサーバー側だけに置きます。チャンネル、イベント、認可エンドポイントは Pusher とまったく同じように動作します。 無料でアカウントを作成 →