PHP および WebSocket プロトコルを介してリアルタイムで通信する方法
Web アプリケーションの開発に伴い、オンライン チャット、株価などの多くのシナリオでリアルタイム通信が非常に重要になってきました。 WebSocket プロトコルは、Web ブラウザとサーバーの間にリアルタイム通信接続を確立するように設計されています。この記事では、リアルタイム通信に PHP および WebSocket プロトコルを使用する方法を紹介し、関連するコード例を示します。
1. WebSocket プロトコルの概要
WebSocket プロトコルは、TCP プロトコルに基づく全二重通信プロトコルであり、サーバーがクライアントにメッセージをアクティブにプッシュしたり、クライアントからメッセージを受信したりできるようにします。従来の HTTP プロトコルと比較して、WebSocket プロトコルには次の特徴があります。
2. PHP WebSocket 拡張機能
PHP 公式には WebSocket の直接サポートは提供されていませんが、拡張機能をインストールして使用することで WebSocket 機能を実装できます。現在、より一般的に使用されている PHP WebSocket 拡張機能には次のものがあります。
スペースの制限のため、この記事ではデモンストレーションの例として Ratchet 拡張機能を使用します。
3. Ratchet 拡張機能をインストールします。
Ratchet 拡張機能は Composer を通じてインストールできます。次のコマンドを実行してインストールします。
composer require cboden/ratchet
4. WebSocket サーバーを作成します
以下は、単純な WebSocket サーバー側実装では、受信したメッセージをそのままクライアントに返すことができます:
<?php use RatchetMessageComponentInterface; use RatchetConnectionInterface; require 'vendor/autoload.php'; class MyWebSocketServer implements MessageComponentInterface { protected $clients; public function __construct() { $this->clients = new SplObjectStorage; } public function onOpen(ConnectionInterface $conn) { $this->clients->attach($conn); } public function onMessage(ConnectionInterface $from, $msg) { foreach ($this->clients as $client) { $client->send($msg); } } public function onClose(ConnectionInterface $conn) { $this->clients->detach($conn); } public function onError(ConnectionInterface $conn, Exception $e) { echo "Error: {$e->getMessage()} "; $conn->close(); } } $server = App::make('RatchetServerIoServer', [ new AppMyWebSocketServer() ]); $server->run();
5. WebSocket クライアントの作成
以下は、上記のサーバー側と通信できる単純な WebSocket クライアント実装です。サーバー:
<?php use RatchetClientWebSocket; use RatchetClientConnector; use ReactEventLoopFactory as EventLoopFactory; require 'vendor/autoload.php'; $loop = EventLoopFactory::create(); $connector = new Connector($loop); $connector('ws://localhost:8000')->then(function (WebSocket $conn) { $conn->on('message', function ($msg) use ($conn) { echo "Received: {$msg} "; $conn->close(); }); $conn->send('Hello, WebSocket Server!'); }, function (Exception $e) use ($loop) { echo "Could not connect: {$e->getMessage()} "; $loop->stop(); }); $loop->run();
6. WebSocket サービスの実行
コマンド ラインから WebSocket サーバーを起動します:
php server.php
次に、クライアント コードを実行します:
php client.php
クライアントとサービスのエンドツーエンドのリアルタイム通信。
概要:
この記事では、リアルタイム通信に PHP および WebSocket プロトコルを使用する方法を簡単に紹介し、Ratchet 拡張機能の関連コード例を示します。 WebSocket プロトコルを通じて、サーバーを実装してメッセージをクライアントにアクティブにプッシュし、リアルタイムの双方向通信を実現できます。 PHP WebSocket 拡張機能を使用すると、WebSocket サーバーとクライアントを簡単に作成し、単純なコードでリアルタイム通信を実現できます。
以上がPHP経由でWebSocketプロトコルでリアルタイム通信する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。