インターネットの継続的な発展に伴い、リアルタイム通信は多くの Web サイトやアプリケーションにとって不可欠な機能となっており、高性能のリアルタイム チャット プラットフォームを構築することが特に重要になっています。 。開発では、PHP と WebSocket を使用するとリアルタイム通信のニーズに十分対応でき、これら 2 つのテクノロジを組み合わせることで、プラットフォームのパフォーマンスを大幅に向上させることもできます。
WebSocket は、ブラウザとサーバーの間で長期的な接続を確立できる全二重通信プロトコルで、サーバーはリアルタイム メッセージをクライアントにアクティブに送信できます。このプロトコルは、高効率、信頼性、優れたリアルタイム性能を特徴としており、リアルタイム通信プラットフォームの構築に非常に適しています。
PHP は最も広く使用されている Web 開発言語の 1 つであり、Laravel、Symfony などの成熟したフレームワークが多数利用可能です。 PHP を使用してリアルタイム チャット プラットフォームを構築すると、WebSocket を通信プロトコルとして使用し、フレームワークが提供するツールを使用してビジネス ロジックを迅速に実装し、迅速な開発と高いパフォーマンスを実現できます。
以下では、Laravel フレームワークに基づいてサンプル Web チャット プラットフォームを構築し、WebSocket を使用してメッセージをリアルタイムにプッシュします。まず、Ratchet ライブラリをダウンロードしてインストールする必要があります。これは ReactPHP に基づいた WebSocket サーバー ライブラリであり、非常に簡単に使用できます。
Ratchet ライブラリをインストールします:
composer require cboden/ratchet
次に、routes/web.php
ファイルで WebSocket ルートを定義します:
use AppHttpControllersChatController; use RatchetHttpHttpServer; use RatchetServerIoServer; use RatchetWebSocketWsServer; Route::get('/chat', function () { $server = IoServer::factory( new HttpServer( new WsServer( new ChatController() ) ), 8080 ); $server->run(); })->name('chat');
ChatController
は WebSocket のコントローラーであり、WebSocket の接続とメッセージを処理するために使用されます。 app/Http/Controllers/ChatController.php
で定義します:
namespace AppHttpControllers; use RatchetMessageComponentInterface; use RatchetConnectionInterface; class ChatController implements MessageComponentInterface { protected $clients; public function __construct() { $this->clients = new SplObjectStorage; } public function onOpen(ConnectionInterface $conn) { $this->clients->attach($conn); echo "New connection! ({$conn->resourceId}) "; } public function onMessage(ConnectionInterface $from, $msg) { foreach ($this->clients as $client) { if ($client !== $from) { $client->send($msg); } } } public function onClose(ConnectionInterface $conn) { $this->clients->detach($conn); echo "Connection {$conn->resourceId} has disconnected "; } public function onError(ConnectionInterface $conn, Exception $e) { echo "An error has occurred: {$e->getMessage()} "; $conn->close(); } }
ChatController
は、4 つのメソッドを含む MessageComponentInterface
インターフェイスを実装します。 ##onOpen、
onMessage、
onClose、および
onError。このうち、
onOpen は接続が確立されたときにトリガーされ、
onMessage はメッセージを受信したときにトリガーされ、
onClose は接続が閉じられたときにトリガーされ、
onError は、接続が閉じられたときにトリガーされ、エラーが発生したときに発生します。
onOpen では、接続を
$clients 配列に保存します。
onMessage では、受信したメッセージを他のすべての接続に送信します。
では、onClose、閉じた接続を
$clients 配列から削除し、
onError でエラーを処理し、接続を閉じます。
var conn = new WebSocket("ws://localhost:8080/chat"); conn.onmessage = function (event) { // 接收到聊天信息后的处理 }; function sendChatMessage(message) { conn.send(message); }
以上がPHP と WebSocket: 高性能リアルタイム チャット プラットフォームの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。