Swoole は、非同期 IO、マルチプロセス、マルチスレッド、コルーチン、その他の機能をサポートする高性能 PHP コルーチン ネットワーク フレームワークです。その中でも、Swoole が提供する WebSocket コンポーネントは、リアルタイムの双方向通信を実現するために使用でき、リアルタイム アプリケーションの構築に最適です。この記事では、Swooleを使用してWebSocket通信を実装する方法と、具体的なコード例を紹介します。
1. 環境の準備
Swoole を使用して WebSocket 通信を実装する前に、Swoole 拡張機能がインストールされていることを確認する必要があります。これは、コマンド
pecl install swoole
を使用してインストールするか、公式 GitHub リポジトリからソース コード ビルドをダウンロードできます。
2. WebSocket サーバーの作成
Swoole の WebSocket コンポーネントをコードに導入し、WebSocket サーバーを作成し、クライアントとの接続を監視します。コードは次のとおりです。
use SwooleWebSocketServer; // 创建WebSocket服务器 $server = new Server('0.0.0.0', 9501); // 监听WebSocket连接事件 $server->on('open', function (Server $server, $request) { echo "Client {$request->fd} connected "; }); // 启动服务器 $server->start();
上記のコードは、リスニング ポート 9501 を持つ WebSocket サーバーを作成し、接続の確立時に接続されたクライアントのファイル記述子 (fd) を出力します。
3. WebSocket メッセージの処理
WebSocket サーバーがクライアントとの接続を確立すると、クライアントはサーバーにメッセージを送信できます。サーバーはクライアントとのメッセージ イベントをリッスンして処理する必要があります。 WebSocket メッセージの処理プロセスは HTTP リクエストのプロセスと似ており、メッセージ ヘッダーを解析してメッセージ本文を取得することで、メッセージの内容を取得できます。コードは次のとおりです。
// 监听WebSocket消息事件 $server->on('message', function (Server $server, $frame) { echo "Received message: {$frame->data} "; });
上記のコードは、WebSocket メッセージ イベントをリッスンし、メッセージの受信時にメッセージの内容を出力します。
4. WebSocket クライアントへのメッセージの送信
WebSocket サーバーのクライアントにメッセージを送信するには、サーバーの push
メソッドを使用する必要があります。このメソッドは、クライアントのファイル記述子と、送信する必要があるメッセージの内容を受け入れます。コードは次のとおりです。
// 监听WebSocket消息事件 $server->on('message', function (Server $server, $frame) { echo "Received message: {$frame->data} "; // 向客户端发送消息 $server->push($frame->fd, 'Server received message: '.$frame->data); });
上記のコードは、WebSocket メッセージの処理時にクライアントにメッセージを返信します。
5. 完全なコード例
use SwooleWebSocketServer; // 创建WebSocket服务器 $server = new Server('0.0.0.0', 9501); // 监听WebSocket连接事件 $server->on('open', function (Server $server, $request) { echo "Client {$request->fd} connected "; }); // 监听WebSocket消息事件 $server->on('message', function (Server $server, $frame) { echo "Received message: {$frame->data} "; // 向客户端发送消息 $server->push($frame->fd, 'Server received message: '.$frame->data); }); // 启动服务器 $server->start();
6. WebSocket クライアント
WebSocket サーバーの構築が完了したら、WebSocket クライアントを使用してサーバーにメッセージを送信する必要がありますサーバーからの応答メッセージを受信します。以下は、WebSocket クライアントのサンプル コードです。
// 创建WebSocket连接 const ws = new WebSocket('ws://localhost:9501'); // 监听WebSocket连接事件 ws.addEventListener('open', function (event) { console.log('Connected to WebSocket server'); // 发送消息 ws.send('Hello, Swoole WebSocket'); }); // 监听WebSocket消息事件 ws.addEventListener('message', function (event) { console.log('Received message:', event.data); });
上記のコードは、JavaScript を使用して WebSocket 接続を作成し、接続の確立後に WebSocket サーバーにメッセージを送信します。メッセージがサーバーによって処理されると、サーバーは応答メッセージをクライアントに送り返します。クライアントはメッセージ イベントをリッスンすることで応答メッセージを受信できます。
7. 概要
この記事では、Swoole を使用して WebSocket 通信を実装する方法を紹介し、WebSocket サーバーの作成方法、メッセージの処理方法、およびクライアントへのメッセージの送信方法をコード例を通して示します。 Swoole の WebSocket コンポーネントを使用すると、リアルタイムの双方向通信アプリケーションを簡単に構築できます。
以上がSwooleを使ってWebSocket通信を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。