モバイル インターネット テクノロジの急速な発展に伴い、インスタント メッセージングとリアルタイム インタラクションに対するユーザーの需要が徐々に増加しています。 WebSocket プロトコルは、Web 上のリアルタイム通信の重要なプロトコルとして、全二重通信、リアルタイム プッシュ、低遅延という特徴を備えており、リアルタイム対話シナリオで優先されるプロトコルとなっています。したがって、Web 開発では、リアルタイム通信を実現するために WebSocket の使い方をマスターする必要があります。
PHP では、Swoole 拡張機能を使用して WebSocket 機能を実装できます。ただし、Swoole の導入と設定には多くの時間と労力がかかり、Swoole に慣れていない一部の開発者にとっては、学習コストも比較的高くなります。
今日はThinkPHP6でWebSocketを使う方法を紹介します。
ThinkPHP6 で WebSocket を使用する前に、topthink/thinker
拡張機能をインストールする必要があります。
composer require topthink/thinker:dev-master
topthink/thinker
は、ThinkPHP6 で PHP コードを実行し、非同期タスクを管理するためのコマンド ライン ツールです。
プロジェクト設定ファイル 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
ディレクトリに配置します。
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
コントローラー クラスでは、onMessage
、onConnect
、onClose
、 を実装する必要があります。 onWorkerStart
4 つのメソッド。
onMessage
: クライアントがデータを送信すると、onMessage
メソッドがトリガーされます。パラメータ $connection
はクライアントの接続を表します$data
は、クライアントによって送信されたデータを表します。 onConnect
: onConnect
メソッドは、クライアントの接続時にトリガーされます。パラメータ $connection
は、クライアントの接続オブジェクトを表します。 onClose
: onClose
メソッドは、クライアントの切断時にトリガーされます。パラメータ $connection
は、クライアントの接続オブジェクトを表します。 onWorkerStart
: onWorkerStart
メソッドは、ワーカー プロセスの開始時にトリガーされます。パラメータ $worker
は、現在のワーカー プロセスのオブジェクトを表します。 WebSocket を設定した後、think
コマンドを使用して WebSocket を開始できます。
php think worker:start
上記のコマンドは、WebSocket サービスを開始し、実行ログをコンソールに出力します。
WebSocket が実装されたら、WebSocket クライアントをテストに使用できます。 Chrome
ブラウザを使用し、テスト用に Simple WebSocket Client
プラグインをインストールします。プラグインにWebSocketサーバーのアドレスを入力し、「接続」をクリックするとWebSocket通信の使用が開始されます。
Simple WebSocket Client
では、文字を入力して [送信] をクリックすると、バックグラウンド コンソールに出力ログが表示され、WebSocket 通信が正常に動作していることがわかります。
まとめ
この記事では、ThinkPHP6 で WebSocket を使用する方法を紹介しました。 WebSocket プロトコルはリアルタイム通信に推奨されるプロトコルであり、その使用シナリオは非常に幅広いです。実際の開発においては、WebSocketを利用することでニーズに応じたリアルタイム通信機能を簡単に実装でき、ユーザーエクスペリエンスを向上させることができます。
以上がThinkPHP6 での WebSocket の使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。