WebSocket は、最新の Web アプリケーションにおいて不可欠な要素となっています。サーバーとクライアント間のリアルタイム通信を可能にする全二重通信方式を提供します。 Swoole は、WebSocket サーバーを簡単に実装できる、PHP ベースの高性能ネットワーク通信フレームワークです。
この記事では、Swooleを使ってWebSocketサーバーを構築する方法を紹介します。
Swoole をインストールするには、PECL (PHP Extension Community Library) を使用する必要があります。ターミナルを開いて次のコマンドを入力します:
pecl install swoole
インストールが完了すると、Swoole 拡張機能が PHP 拡張機能リストに自動的にロードされます。
WebSocket サーバーを作成する最も簡単な方法は、Swoole の WebSocket サーバー クラスを使用することです:
$server = new SwooleWebsocketServer("127.0.0.1", 9501); $server->on('open', function (SwooleWebsocketServer $server, $request) { echo "Client {$request->fd} connected "; }); $server->on('message', function (SwooleWebsocketServer $server, $frame) { echo "Received message: {$frame->data} "; // Broadcast message to all connected clients foreach ($server->connections as $fd) { $server->push($fd, $frame->data); } }); $server->on('close', function (SwooleWebsocketServer $server, $fd) { echo "Client {$fd} disconnected "; }); $server->start();
この例では、ローカル WebSocket サーバーを作成し、それに接続します。ポート 9501 でリッスンするように設定します。また、3 つのコールバック関数も追加されます:
open
- 新しい WebSocket クライアントがサーバーに接続するときに呼び出されます。 message
- サーバーがクライアントからメッセージを受信すると呼び出されます。 close
- クライアントが切断されたときに呼び出されます。 open
関数では、新しいクライアントが接続されたことを示す簡単なメッセージをコンソールに出力します。
message
関数では、受信したメッセージをコンソールに出力し、接続されているすべてのクライアントにこのメッセージをブロードキャストします。
close
関数では、切断されたクライアントの fd を示すメッセージをコンソールに出力します。
最後に、start
メソッドを呼び出して WebSocket サーバーを起動します。
WebSocket サーバーをテストするには、JavaScript の WebSocket API を使用して単純なクライアントを作成できます。非常に簡単な例を次に示します。
// Connect to WebSocket server const ws = new WebSocket('ws://127.0.0.1:9501'); // Send a message to the server ws.onopen = function() { ws.send('Hello, server!'); }; // Receive a message from the server ws.onmessage = function(event) { console.log('Received message:', event.data); };
この例では、WebSocket オブジェクトを作成し、作成したばかりの WebSocket サーバーに接続します。また、2 つのコールバック関数も定義します:
onopen
- WebSocket 接続が正常に確立されたときに呼び出されます。ここでサーバーにメッセージを送信します。 onmessage
- WebSocket がサーバーからメッセージを受信すると呼び出されます。 このクライアントをテストするには、ブラウザでコンソールを開き、コードをコピーしてコンソールに貼り付けるだけです。
この例で示した関数に加えて、Swoole は他にも多くの便利な関数を提供します。たとえば、push
メソッドを呼び出して、メッセージをクライアントにプッシュできます。さらに、コルーチンを使用して非同期プログラミングを実装することもできます。
つまり、Swoole は WebSocket サーバーの構築に非常に適しています。リアルタイム Web アプリケーションの開発を非常に簡単にする多くの便利な機能を提供します。
以上がSwooleを使用してWebSocketサーバーを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。