Documentation Index
Fetch the complete documentation index at: https://kawax.biz/llms.txt
Use this file to discover all available pages before exploring further.
このページはReverb サーバー自体のセットアップと運用に焦点を当てています。
ブロードキャストイベントの作成やLaravel Echoの使い方はブロードキャストを参照してください。
Reverbとは
Laravel Reverb は、Laravelが公式に提供するセルフホスト型WebSocketサーバーです。 外部サービスへの依存なしに、高速でスケーラブルなリアルタイム通信をLaravelアプリケーションに追加できます。 Reverbはブロードキャスト基盤の上で動作し、サーバーサイドのイベントをWebSocket経由でブラウザへ届ける役割を担います。インストール
install:broadcasting Artisanコマンドを使うと、Reverb を含むすべての依存関係を一括でインストールできます。
--reverb オプションを付けて実行すると自動的にReverbがセットアップされます。
- Composer パッケージ (
laravel/reverb) のインストール - NPM パッケージ (
laravel-echo、pusher-js) のインストール .envへの環境変数の追加config/reverb.phpの生成
reverb:install を実行します。
設定
アプリケーション認証情報
クライアントとサーバーの接続確立に使用する認証情報を環境変数で設定します。config/reverb.php の apps セクションで参照されます。
許可するオリジン (Allowed Origins)
クライアントリクエストを許可するオリジンをconfig/reverb.php の allowed_origins で制限できます。
* を指定します。
複数アプリ対応
1つのReverbサーバーで複数のアプリケーションに対応できます。config/reverb.php の apps 配列に複数のエントリを追加します。
SSL設定
本番環境では、NginxなどのWebサーバーがSSL終端を担当し、Reverbへリクエストをプロキシするのが一般的です。 ローカル開発環境でSecure WebSocket (wss://) を使いたい場合は、Laravel HerdやValetの証明書を活用できます。
config/reverb.php の tls オプションを設定します。
サーバーの起動
reverb:start Artisanコマンドでサーバーを起動します。
0.0.0.0:8080 で起動します。
--host / --port オプションでカスタムアドレスを指定できます。
REVERB_SERVER_HOST / REVERB_SERVER_PORT はサーバー自体のリスンアドレスです。
REVERB_HOST / REVERB_PORT はLaravelアプリがブロードキャストメッセージを送信する先のアドレスです。
本番環境ではこれらが異なる場合があります。デバッグモード
パフォーマンスのため、Reverbはデフォルトでデバッグ情報を出力しません。 接続やメッセージの流れを確認したい場合は--debug オプションを使います。
サーバーの再起動
Reverbは常駐プロセスのため、コードの変更を反映するには再起動が必要です。reverb:restart コマンドは、すべての接続を graceful に終了してからサーバーを停止します。
モニタリング
ReverbはLaravel Pulse との連携をサポートしています。 接続数やメッセージ数をリアルタイムでダッシュボードに表示できます。 まずconfig/pulse.php にReverbのレコーダーを追加します。
pulse:check デーモンを起動してください。
水平スケーリング構成の場合、pulse:check は1台のサーバーでのみ実行します。
本番環境での運用
ファイルオープン制限
WebSocket接続は1接続につき1ファイルディスクリプターを消費します。 OSレベルの制限を確認し、必要に応じて上限を引き上げます。/etc/security/limits.conf で上限を変更できます。
イベントループ (ext-uv)
ReverbはデフォルトでPHPのstream_select を使いますが、これは最大1,024ファイルの制限があります。
1,000以上の同時接続を扱う場合は ext-uv をインストールして制限を解放します。
ext-uv が利用可能な場合、Reverbは自動的にそちらを使用します。
Nginxリバースプロキシ
本番環境ではReverbを直接公開せず、NginxなどのWebサーバーでプロキシします。 以下はNginxの設定例です。nginx.conf の worker_rlimit_nofile と worker_connections を調整します。
プロセス管理 (Supervisor)
本番環境ではSupervisorでReverbプロセスを管理します。supervisor.conf の minfds を設定して、必要なファイルディスクリプターを確保します。
スケーリング (Redis)
単一サーバーでは処理しきれない接続数が必要な場合、Redisのpub/sub機能を使った水平スケーリングが可能です。.env でスケーリングを有効化します。
Laravel Cloud では、インフラ管理なしにReverb対応アプリをデプロイできる
フルマネージドのWebSocketインフラを提供しています。
イベント
Reverbは接続・メッセージのライフサイクルで以下のイベントを発行します。 イベントリスナーでこれらを受け取り、独自の処理を追加できます。| イベント | 説明 |
|---|---|
ChannelCreated | チャンネルが作成されたとき(最初の接続がサブスクライブ) |
ChannelRemoved | チャンネルが削除されたとき(最後の接続がアンサブスクライブ) |
ConnectionPruned | 古い接続がサーバーによって切断されたとき |
MessageReceived | クライアントからメッセージを受信したとき |
MessageSent | クライアントへメッセージを送信したとき |
Laravel\Reverb\Events 名前空間に属します。
次のステップ
ブロードキャスト
ブロードキャストイベントの作成、チャンネル認可、Laravel Echoの設定方法を確認する
イベントとリスナー
Reverbが発行するイベントを受け取るためのLaravelイベントシステムを学ぶ