Laravel Reverb
導入
Laravel Reverb は、Laravel アプリケーションに高速でスケーラブルなリアルタイム WebSocket 通信を直接もたらし、Laravel の既存の イベントブロードキャストツール とシームレスに統合します。
インストール
install:broadcasting
Artisan コマンドを使用して Reverb をインストールできます:
php artisan install:broadcasting
設定
裏側では、install:broadcasting
Artisan コマンドが reverb:install
コマンドを実行し、適切なデフォルトの設定オプションで Reverb をインストールします。設定を変更したい場合は、Reverb の環境変数を更新するか、config/reverb.php
設定ファイルを更新することができます。
アプリケーションの資格情報
Reverb に接続するためには、クライアントとサーバー間で一連の Reverb "アプリケーション" 資格情報を交換する必要があります。これらの資格情報はサーバーで構成され、クライアントからのリクエストを検証するために使用されます。次の環境変数を使用してこれらの資格情報を定義できます:
REVERB_APP_ID=my-app-id
REVERB_APP_KEY=my-app-key
REVERB_APP_SECRET=my-app-secret
許可されたオリジン
config/reverb.php
設定ファイルの apps
セクション内の allowed_origins
設定値を更新することで、クライアントリクエストの元となるオリジンを定義することもできます。許可されたオリジンにリストされていないオリジンからのリクエストは拒否されます。*
を使用してすべてのオリジンを許可することもできます。
'apps' => [
[
'id' => 'my-app-id',
'allowed_origins' => ['laravel.com'],
// ...
]
]
追加アプリケーション
通常、Reverbはインストールされたアプリケーション用にWebSocketサーバーを提供します。ただし、1つのReverbインストールを使用して複数のアプリケーションを提供することも可能です。
たとえば、Reverbを介して複数のアプリケーションに対するWebSocket接続を提供する単一のLaravelアプリケーションを維持したい場合、アプリケーションのconfig/reverb.php
構成ファイルで複数のapps
を定義することで実現できます:
'apps' => [
[
'app_id' => 'my-app-one',
// ...
],
[
'app_id' => 'my-app-two',
// ...
],
],
SSL
ほとんどの場合、セキュアなWebSocket接続は、リクエストがReverbサーバーにプロキシされる前に上流ウェブサーバー(Nginxなど)で処理されます。
ただし、ローカル開発中など、Reverbサーバーが直接セキュアな接続を処理することが便利な場合があります 。Laravel Herdのセキュアサイト機能を使用しているか、Laravel Valetを使用しており、アプリケーションにsecureコマンドを実行している場合は、サイトのために生成されたHerd / Valet証明書を使用してReverb接続をセキュアにすることができます。これを行うには、REVERB_HOST
環境変数をサイトのホスト名に設定するか、Reverbサーバーを起動する際にホスト名オプションを明示的に渡します:
php artisan reverb:start --host="0.0.0.0" --port=8080 --hostname="laravel.test"
HerdおよびValetドメインはlocalhost
に解決されるため、上記のコマンドを実行すると、ReverbサーバーにセキュアなWebSocketプロトコル(wss
)を介してアクセスできるようになります:wss://laravel.test:8080
。
また、アプリケーションのconfig/reverb.php
構成ファイルでtls
オプションを定義することで、手動で証明書を選択することもできます。tls
オプションの配列内で、PHPのSSLコンテキストオプションでサポートされているオプションのいずれかを指定できます:
'options' => [
'tls' => [
'local_cert' => '/path/to/cert.pem'
],
],
サーバーの起動
Reverbサーバーはreverb:start
Artisanコマンドを使用して起動できます。
php artisan reverb:start
デフォルトでは、Reverbサーバーは0.0.0.0:8080
で起動され、すべてのネットワークインターフェースからアクセスできるようになります。
カスタムホストやポートを指定する必要がある場合は、サーバーを起動する際に--host
および--port
オプションを使用することができます:
php artisan reverb:start --host=127.0.0.1 --port=9000
また、アプリケーションの.env
構成ファイルでREVERB_SERVER_HOST
およびREVERB_SERVER_PORT
環境変数を定義することもできます。
REVERB_SERVER_HOST
およびREVERB_SERVER_PORT
環境変数は、REVERB_HOST
およびREVERB_PORT
と混同しないように注意してください。前者はReverbサーバー自体を実行するホストとポートを指定し、後者のペアはLaravelにブロードキャストメッセージを送信する場所を指示します。たとえば、本番環境では、パブリックなReverbホスト名からポート443
でリクエストをReverbサーバーが0.0.0.0:8080
で動作している場所にルーティングすることができます。このシナリオでは、環境変数は次のように定義されます:
REVERB_SERVER_HOST=0.0.0.0
REVERB_SERVER_PORT=8080
REVERB_HOST=ws.laravel.com
REVERB_PORT=443