ホームページ  >  記事  >  PHPフレームワーク  >  Laravel を使用した WebSocket 開発: リアルタイム通信のソリューション

Laravel を使用した WebSocket 開発: リアルタイム通信のソリューション

WBOY
WBOYオリジナル
2023-08-13 13:46:552807ブラウズ

Laravel を使用した WebSocket 開発: リアルタイム通信のソリューション

Laravel による WebSocket 開発: リアルタイム通信のためのソリューション

はじめに:

Web アプリケーションの開発では、リアルタイム通信が必要となります。ますます重要になってきています。従来の HTTP リクエスト/レスポンス モデルではアプリケーションのリアルタイム性が制限されるため、人々は新しいソリューションを探し始めました。 WebSocket テクノロジーが登場し、クライアントとサーバーの間に永続的な接続を確立し、リアルタイム通信の機能を実現する方法が提供されます。この記事では、Laravel フレームワークを使用して、WebSocket をベースにしたリアルタイム通信アプリケーションを簡単に開発する方法を紹介します。

WebSocket とは何ですか?

WebSocket は、クライアントとサーバーの間に双方向の永続的な接続を確立する通信プロトコルです。従来の HTTP リクエスト/レスポンス モデルとは異なり、WebSocket を使用すると、サーバーとクライアントがリアルタイムでデータを交換できます。 WebSocket 通信は全二重です。これは、サーバーとクライアントが同時にデータを送受信できることを意味します。

なぜLaravelを選ぶのですか?

Laravel は、Web アプリケーションの構築をより簡単かつ効率的にするための多くの強力な機能とツールを提供する人気のある PHP 開発フレームワークです。 Laravel フレームワークはリアルタイム通信の適切なサポートを提供し、Laravel Echo および Laravel WebSockets 拡張パッケージにより、WebSocket ベースのアプリケーションの開発が簡単になります。

Laravel WebSockets の使用を開始する:

まず、Laravel WebSockets 拡張パッケージをインストールする必要があります。ターミナルで次のコマンドを実行します:

composer require beyondcode/laravel-websockets

インストールが完了したら、次のコマンドを実行して構成ファイルを公開します:

php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="config"

次に、WebSocket 関連のデータベース移行を生成する必要があります。ファイル:

php artisan vendor:publish --provider="BeyondCode\LaravelWebSockets\WebSocketsServiceProvider" --tag="migrations"
php artisan migrate

Laravel WebSocket の構成:

Laravel 構成ファイル「config/websockets.php」を開くと、リスニング アドレスやポート、認証や認証など、WebSocket 関連の構成オプションを設定できます。認可など

イベントの作成:

Laravel では、イベントを使用してリアルタイム通信を処理します。まず、イベント クラスを作成する必要があります。次のコマンドを実行して、「NewMessage」イベントという名前のクラスを作成します。

php artisan make:event NewMessage

新しく作成したイベント クラス「app/Events/NewMessage.php」を開くと、イベントのいくつかのプロパティとメソッドを定義できます。たとえば、ブロードキャストするメッセージのコンテンツを保存する「message」というプロパティをイベントに追加できます。

public $message;

public function __construct($message)
{
    $this->message = $message;
}

次のステップは、イベント ブロードキャスターを作成することです。次のコマンドを実行して、「NewMessageBroadcast」という名前のブロードキャスター クラスを作成します。

php artisan make:channel NewMessageBroadcast

新しく作成したブロードキャスター クラス「app/Broadcasting/NewMessageBroadcast.php」を開きます。ブロードキャスト イベントを処理するブロードキャスターのメソッドを定義する必要があります。 。

public function broadcastOn()
{
    return new Channel('new-message');
}

public function broadcastAs()
{
    return 'message';
}

ブロードキャストドライバーの構成:

Laravel 構成ファイル「config/broadcasting.php」を開くと、ブロードキャストドライバーのタイプを「プッシャー」に設定し、関連する構成オプションを提供できます。

'pusher' => [
    'driver' => 'pusher',
    'key' => env('PUSHER_APP_KEY'),
    'secret' => env('PUSHER_APP_SECRET'),
    'app_id' => env('PUSHER_APP_ID'),
    'options' => [
        'cluster' => env('PUSHER_APP_CLUSTER'),
        'useTLS' => true,
    ],
],

設定が完了したら、Pusher をブロードキャスト ドライバーとして使用できます。

イベントの処理:

このアプリケーションでは、コントローラーまたはモデルでイベントをトリガーし、ブロードキャスト クラスを使用して送信できます。以下に例を示します。

use AppEventsNewMessage;
use IlluminateHttpRequest;

public function sendMessage(Request $request)
{
    // 处理接收到的消息
    $message = $request->input('message');

    // 触发事件并广播
    event(new NewMessage($message));

    return response()->json(['message' => 'Message sent.']);
}

上記のコードでは、まずリクエストから受信したメッセージのコンテンツを取得します。次に、Laravel のイベント クラス「event」を使用してカスタム イベント「NewMessage」をトリガーします。最後に、メッセージが送信されたことを示す JSON 応答を返します。

ブロードキャストのリッスン:

次に、ブロードキャストをリッスンするフロントエンド スクリプトを作成する必要があります。 HTML コードに、次のコードを追加します。

<script src="https://cdn.jsdelivr.net/npm/laravel-echo@^1.10.0/dist/echo.min.js"></script>
<script src="/js/app.js"></script>
<script>
    // 与WebSockets服务器建立连接
    const echo = new Echo({
        broadcaster: 'pusher',
        key: 'your-pusher-key',
        cluster: 'your-pusher-cluster',
        encrypted: true,
    });

    // 监听来自"new-message"频道的消息
    echo.channel('new-message')
        .listen('.message', (message) => {
            console.log(message);
        });
</script>

上記のコードでは、最初に Laravel Echo とフロントエンド JavaScript ファイルを導入しました。次に、プッシャー キーと前に構成したクラスター情報を使用して Echo インスタンスを初期化しました。最後に、「echo.channel()」メソッドを使用して「new-message」という名前のチャネルをリッスンし、「.listen()」メソッドを使用してそのチャネルからのメッセージを処理します。

結論:

WebSocket 開発に Laravel を使用することは、リアルタイム通信にとって理想的なソリューションです。 Laravel が提供する Laravel Echo および Laravel WebSockets 拡張パッケージを使用すると、WebSockets ベースのアプリケーションを簡単かつ効率的に構築できます。この記事の手順とサンプル コードに従うことで、強力なリアルタイム コミュニケーション アプリケーションを迅速に構築できるようになります。あなたの開発プロセスが成功することを祈っています!

以上がLaravel を使用した WebSocket 開発: リアルタイム通信のソリューションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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