ホームページ >PHPフレームワーク >ThinkPHP >ThinkPHP6 での WebSocket の使用

ThinkPHP6 での WebSocket の使用

王林
王林オリジナル
2023-06-21 12:49:393179ブラウズ

モバイル インターネット テクノロジの急速な発展に伴い、インスタント メッセージングとリアルタイム インタラクションに対するユーザーの需要が徐々に増加しています。 WebSocket プロトコルは、Web 上のリアルタイム通信の重要なプロトコルとして、全二重通信、リアルタイム プッシュ、低遅延という特徴を備えており、リアルタイム対話シナリオで優先されるプロトコルとなっています。したがって、Web 開発では、リアルタイム通信を実現するために WebSocket の使い方をマスターする必要があります。

PHP では、Swoole 拡張機能を使用して WebSocket 機能を実装できます。ただし、Swoole の導入と設定には多くの時間と労力がかかり、Swoole に慣れていない一部の開発者にとっては、学習コストも比較的高くなります。

今日はThinkPHP6でWebSocketを使う方法を紹介します。

1. 拡張機能をインストールします

ThinkPHP6 で WebSocket を使用する前に、topthink/thinker 拡張機能をインストールする必要があります。

composer require topthink/thinker:dev-master

topthink/thinker は、ThinkPHP6 で PHP コードを実行し、非同期タスクを管理するためのコマンド ライン ツールです。

2. WebSocket の設定

プロジェクト設定ファイル config/socket.php で WebSocket を設定する必要があります。

<?php
return [
    // WebSocket服务器地址,使用内网穿透时填写内网地址
    'server' => '127.0.0.1:9501',

    // WebSocket的应用类,需要实现     hinkworkerServer 接口
    'worker_class' => 'appcontrollerWebSocket',
];

server のアドレスと、Server インターフェイスを実装するクラス worker_class を指定する必要があります。ここでは、コントローラー クラスを実装します。 WebSocket 関数の名前を WebSocket として、appcontroller ディレクトリに配置します。

3. WebSocket の実装

WebSocket という名前のコントローラーを appcontroller ディレクトリに作成し、コントローラー Server を実装します。インターフェース。

<?php
namespace appcontroller;

use thinkworkerServer;

class WebSocket implements Server
{
    protected $socket = 'websocket://127.0.0.1:9501';

    public function onMessage($connection, $data)
    {
        foreach ($this->worker->connections as $conn) {
            $conn->send('user ' . $connection->id . ' said: ' . $data);
        }
    }

    public function onConnect($connection)
    {
        echo "new connection from ip " . $connection->getRemoteIp() . "
";
    }

    public function onClose($connection)
    {
        echo "connection closed: " . $connection->id . "
";
    }

    public function onWorkerStart($worker)
    {
        // 初始化
    }
}

WebSocket コントローラー クラスでは、onMessageonConnectonClose を実装する必要があります。 onWorkerStart 4 つのメソッド。

  • onMessage: クライアントがデータを送信すると、onMessage メソッドがトリガーされます。パラメータ $connection はクライアントの接続を表します$data は、クライアントによって送信されたデータを表します。
  • onConnect: onConnect メソッドは、クライアントの接続時にトリガーされます。パラメータ $connection は、クライアントの接続オブジェクトを表します。
  • onClose: onClose メソッドは、クライアントの切断時にトリガーされます。パラメータ $connection は、クライアントの接続オブジェクトを表します。
  • onWorkerStart: onWorkerStart メソッドは、ワーカー プロセスの開始時にトリガーされます。パラメータ $worker は、現在のワーカー プロセスのオブジェクトを表します。

4. WebSocket の実行

WebSocket を設定した後、think コマンドを使用して WebSocket を開始できます。

php think worker:start

上記のコマンドは、WebSocket サービスを開始し、実行ログをコンソールに出力します。

5. WebSocket のテスト

WebSocket が実装されたら、WebSocket クライアントをテストに使用できます。 Chrome ブラウザを使用し、テスト用に Simple WebSocket Client プラグインをインストールします。プラグインにWebSocketサーバーのアドレスを入力し、「接続」をクリックするとWebSocket通信の使用が開始されます。

Simple WebSocket Client では、文字を入力して [送信] をクリックすると、バックグラウンド コンソールに出力ログが表示され、WebSocket 通信が正常に動作していることがわかります。

まとめ

この記事では、ThinkPHP6 で WebSocket を使用する方法を紹介しました。 WebSocket プロトコルはリアルタイム通信に推奨されるプロトコルであり、その使用シナリオは非常に幅広いです。実際の開発においては、WebSocketを利用することでニーズに応じたリアルタイム通信機能を簡単に実装でき、ユーザーエクスペリエンスを向上させることができます。

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

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