ホームページ  >  記事  >  PHPフレームワーク  >  ThinkPHP6 での WebSocket 通信の使用

ThinkPHP6 での WebSocket 通信の使用

PHPz
PHPzオリジナル
2023-06-20 10:49:233070ブラウズ

インターネット技術の発展に伴い、WebSocket は非常に一般的に使用される通信プロトコルになりました。 Web 側で WebSocket 通信を使用すると、リアルタイムの対話、プッシュ メッセージ、その他の機能を実現して、より良いユーザー エクスペリエンスを実現できます。 ThinkPHP6 フレームワークでも WebSocket 通信を利用すると非常に便利ですので、この記事では ThinkPHP6 で WebSocket 通信を利用する方法を詳しく紹介します。

1. WebSocket の概要

WebSocket は、TCP プロトコルに基づいて実装された全二重双方向通信プロトコルです。 WebSocket プロトコルを介して、Web 側とサーバー側の間に永続的な接続を確立してリアルタイム通信を行うことができます。

WebSocket プロトコルでは、HTTP プロトコルと比較して、クライアントとサーバーが接続された状態でリアルタイムにデータを送受信できるため、サーバー側で毎回接続を再確立する必要がありません。リクエストは HTTP プロトコルと同様に送信されます。この機能により、WebSocket プロトコルはリアルタイム通信シナリオに非常に適したものになります。

2. ThinkPHP6 で WebSocket 通信を使用する

ThinkPHP6 で WebSocket 通信を使用すると、Swoole 拡張機能を使用するだけで WebSocket 通信を実現できるため、非常に便利です。以下では、ThinkPHP6 プロジェクトで WebSocket 通信を使用する方法を詳しく紹介します。

  1. Swoole 拡張機能のインストール

最初に Swoole 拡張機能をインストールする必要があります。コマンド ラインで次のコマンドを実行します。

pecl install swoole
  1. WebSocket コントローラーの作成

次のコマンドを使用して、WebSocket という名前のコントローラーを作成できます。

php think make:controller WebSocket

WebSocket コントローラーを作成した後、コントローラーで次のメソッドを定義できます。

use SwooleWebsocketFrame;
use SwooleWebsocketServer;

class WebSocket
{
    public function onOpen(Server $server, Frame $frame)
    {
        echo "connected".PHP_EOL;
        $server->push($frame->fd, "Welcome to use WebSocket".PHP_EOL);
    }

    public function onClose(Server $server, $fd)
    {
        echo "closed".PHP_EOL;
    }

    public function onMessage(Server $server, Frame $frame)
    {
        echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}".PHP_EOL;
        $server->push($frame->fd, "receive success".PHP_EOL);
    }
}

ここでは、接続の確立、終了、メッセージ受信などのイベントに対応する 3 つのメソッドが定義されています。 onOpen メソッドでは、push メソッドを使用してメッセージをクライアントにプッシュできます。onClose メソッドでは、接続を閉じるときにロジックを処理できます。onMessage メソッドでは、メッセージの受信後にロジックを処理できます。

  1. WebSocket サービスの開始

WebSocket コントローラーを作成した後、コマンド ラインで WebSocket サービスを開始する必要もあります。

php think swoole start

WebSocket サービスを開始した後、ブラウザで WebSocket API を使用して接続をテストできます。

コードは次のとおりです。

let websocket = new WebSocket("ws://127.0.0.1:9501");

websocket.onopen = function(event) {
    console.log("connected");
};

websocket.onmessage = function(event) {
    console.log(event.data);
};

websocket.onclose = function(event) {
    console.log("closed");
};

ここでは、接続の確立、メッセージの受信、接続の終了のイベント処理が実装されています。接続が確立されると、「connected」が出力され、メッセージを受信すると、メッセージがコンソールに出力され、接続が閉じられると、「closed」が出力されます。

これで、ThinkPHP6 での WebSocket 通信の利用は完了です。上記の手順により、軽量で高性能な WebSocket アプリケーションを迅速に構築できます。

3. 概要

この記事では、ThinkPHP6 で WebSocket 通信を使用する方法を紹介し、Swoole 拡張機能を使用して、高パフォーマンスの WebSocket アプリケーションを迅速に構築できます。この記事が皆さんのお役に立てば幸いです。

以上がThinkPHP6 での WebSocket 通信の使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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