ホームページ  >  記事  >  PHPフレームワーク  >  Laravel 開発: Laravel Broadcasting を使用してイベント ブロードキャストを実装するにはどうすればよいですか?

Laravel 開発: Laravel Broadcasting を使用してイベント ブロードキャストを実装するにはどうすればよいですか?

PHPz
PHPzオリジナル
2023-06-13 19:56:41973ブラウズ

リアルタイム Web アプリケーションでは、イベント ブロードキャストは最も重要な機能の 1 つです。 Laravel フレームワークは、すぐに使えるイベント ブロードキャスト機能を提供しており、イベントのブロードキャストと監視は Laravel Broadcasting を通じて簡単に実装できます。この記事では、Laravel Broadcastingを使用してイベントブロードキャストを実装する方法を紹介します。

1. イベント ブロードキャストについて理解する

Web アプリケーションでは、ユーザー登録の成功や記事の公開などのイベントが発生したときに、他のユーザーが関連情報を適時に受け取ることができるようにしたいと考えています。現時点で、従来のページ更新または Ajax ポーリング方法を使用すると、帯域幅とサーバー リソースが大量に消費され、リアルタイムの需要を満たすことができません。イベントブロードキャストはこの問題を解決できます。

イベントブロードキャストとは、特定のチャンネルまたはブロードキャストグループにイベントを送信し、特定のチャンネルまたはブロードキャストグループを監視しているユーザーが関連情報を即座に受信できるようにすることです。イベント ブロードキャストを通じて、サーバーとクライアント間の通信の数が大幅に削減され、ネットワークの遅延と帯域幅の消費が削減され、Web アプリケーションのパフォーマンスとユーザー エクスペリエンスが向上します。

2. Laravel Broadcasting のインストール

Laravel Broadcasting を使用する前に、Laravel Echo および関連するブロードキャスト ドライバーをインストールする必要があります。 Laravel Echo は、Laravel フレームワークに付属する Socket.io クライアント ライブラリであり、ブロードキャスト サービスとのリアルタイム通信に使用されます。ブロードキャスト ドライバーは、Redis や Pusher などのさまざまなブロードキャスト サービスと対話するための API を提供します。この記事では、Pusher をブロードキャスト サービスとして使用します。

  1. Laravel Echo と Pusher SDK のインストール

npm 経由で Laravel Echo と Pusher SDK をインストールします:

npm install --save laravel-echo pusher-js
  1. 設定ファイルを変更します

config/app.php ファイルを開き、次のコードのコメントを解除します:

AppProvidersBroadcastServiceProvider::class,

次に、Pusher 関連の設定を .env ファイルに追加します:

BROADCAST_DRIVER=pusher

PUSHER_APP_ID=your-app-id
PUSHER_APP_KEY=your-app-key
PUSHER_APP_SECRET=your-app-secret

その中に、 - app-id、your-app-key、your-app-secret は実際の状況に応じて変更する必要があります。

3. イベントとチャンネルを作成する

Laravel では、イベントは Event クラスを通じて実装されます。ブロードキャストする必要があるイベントごとに、対応する Event クラスを作成できます。この記事では、成功したユーザー登録を例として UserRegistered イベントを作成します。まず、ターミナルで次のコマンドを実行して、UserRegistered イベント クラスを作成します。

php artisan make:event UserRegistered

次に、app/Events/UserRegistered.php ファイルを開き、コードを次のように変更します。上のコードでは、UserRegistered イベント クラスを作成し、コンストラクターに User モデルを挿入しました。次に、broadcastOn() メソッドで、イベントをブロードキャストする必要があるチャネルを定義します。プライベート チャネルは「user.{user_id}」の形式で指定されます。

次に、「user.{user_id}」チャネルのユーザーを監視するための UserChannel チャネルを作成する必要があります。 UserChannel チャネルを作成するには、手動登録と自動検出という 2 つの方法があります。

手動登録方法:

app/Providers/BroadcastServiceProvider.php ファイルに UserChannel チャネルを登録します:

namespace AppEvents;

use AppUser;
use IlluminateQueueSerializesModels;
use IlluminateFoundationEventsDispatchable;

class UserRegistered
{
    use Dispatchable, SerializesModels;

    public $user;

    /**
     * Create a new event instance.
     *
     * @param  AppUser  $user
     * @return void
     */
    public function __construct(User $user)
    {
        $this->user = $user;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return IlluminateBroadcastingChannel|array
     */
    public function broadcastOn()
    {
        return new Channel('user.'.$this->user->id);
    }
}

自動検出方法:

アプリ内/Broadcast ディレクトリに UserChannel.php ファイルを作成し、コードを次のように変更します。

use IlluminateSupportFacadesBroadcast;
use AppBroadcastingUserChannel;

Broadcast::channel('user.{userId}', UserChannel::class);

上記のコードでは、UserChannel チャネル クラスを作成し、構築メソッドに User モデルを挿入しました。次に、ユーザーが join() メソッドを介してチャネルにアクセスできることを確認します。

4. イベントのブロードキャスト

イベントとチャネルを作成した後、broadcast() 関数を使用して、指定したチャネルにイベントをブロードキャストできます。この記事では、ユーザー登録が成功した後、UserController クラスに UserRegistered イベント ブロードキャストを実装します。

namespace AppBroadcasting;

use AppUser;

class UserChannel
{
    /**
     * Create a new channel instance.
     *
     * @param  AppUser  $user
     * @return void
     */
    public function __construct(User $user)
    {
        $this->user = $user;
    }

    /**
     * Authenticate the user's access to the channel.
     *
     * @return array|bool
     */
    public function join(User $user, $userId)
    {
        return $user->id === (int) $userId;
    }
}

上記のコードでは、最初にユーザーを作成し、保存操作を実行します。次に、event() 関数を使用して UserRegistered イベントをブロードキャストし、新しいユーザーが正常に登録されたことを他のユーザーに通知します。

5. イベントの監視

イベントとチャネルを作成した後、他のユーザーは対応するチャネルを監視することでイベントを受信できます。次に、Laravel Echo を通じて UserRegistered イベントをリッスンします。

構成ファイルを変更する
  1. まず、resources/assets/js/bootstrap.js ファイルに次のコードを追加します。上のコードでは、Laravel Echo と Pusher SDK を使用して Pusher ブロードキャスト サービスに接続します。 PUSHER_APP_KEY と PUSHER_APP_CLUSTER は .env ファイルで設定できます。

リスナーの作成

    resources/assets/js/app.js ファイルを開き、次のコードをそのファイルに追加します。上記のコードでは、window.Echo.channel() メソッドを通じて「user.{user_id}」チャネルをリッスンし、イベント タイプを「UserRegistered」として指定します。このコードは、各ユーザーが自分のチャンネルのみを聴くようにするために、ユーザーのログイン後に実行されます。
  1. 6. テスト

アプリケーションに新しいユーザーを登録し、コンソールで新しいユーザー登録イベントが受信されるかどうかを確認します。

以上の手順で、Laravel Broadcastingを使用してイベントブロードキャストを実装するプロセスが完了しました。イベント ブロードキャストは、リアルタイム Web アプリケーションの重要な機能の 1 つであり、Web アプリケーションのパフォーマンスとユーザー エクスペリエンスを大幅に向上させることができます。

以上がLaravel 開発: Laravel Broadcasting を使用してイベント ブロードキャストを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。