Web アプリケーションがより複雑になるにつれて、リアルタイム通信とデータ プッシュがより一般的になってきています。ここで WebSocket が登場します。 WebSocket は、サーバーとクライアントがリアルタイム通信とデータ プッシュのための双方向通信のための永続的な接続を確立できるようにするプロトコルです。この記事では、PHP で WebSocket を使用する方法について説明します。
WebSocket は、接続の確立後にサーバーとクライアントがリアルタイムで通信できるようにする、全二重の TCP ベースのプロトコルです。 HTTP 要求/応答モデルとは異なり、WebSocket 接続は接続が確立された後も常に開いたままになるため、複数の HTTP ハンドシェイクは必要ありません。
WebSocket は、テキスト、バイナリ、JSON、XML などの複数のデータ型をサポートするバイナリ プロトコルです。これにより、WebSocket はリアルタイム通信とデータ プッシュに最適になります。
PHP で WebSocket を使用するには、ライブラリを使用する必要があります。この記事では、Ratchet ライブラリを使用します。 Ratchet をインストールするには、Composer から次のコマンドを実行します。
composer require cboden/ratchet
インストールが完了したら、WebSocket アプリケーションを実装するコードの作成を開始できます。
次に、クライアントからメッセージを受信し、接続されているすべてのクライアントにメッセージを送信する WebSocket サービスを実装する簡単な例を示します。 ##
use RatchetServerIoServer; use RatchetHttpHttpServer; use RatchetWebSocketWsServer; use RatchetMessageComponentInterface; use RatchetConnectionInterface; class Chat implements MessageComponentInterface { protected $clients; public function __construct() { $this->clients = new SplObjectStorage; } public function onOpen(ConnectionInterface $conn) { $this->clients->attach($conn); echo "New client connected: {$conn->resourceId} "; } public function onClose(ConnectionInterface $conn) { $this->clients->detach($conn); echo "Client disconnected: {$conn->resourceId} "; } public function onMessage(ConnectionInterface $from, $msg) { foreach ($this->clients as $client) { if ($client !== $from) { $client->send($msg); } } } public function onError(ConnectionInterface $conn, Exception $e) { echo "Error: {$e->getMessage()} "; $conn->close(); } } $server = IoServer::factory( new HttpServer( new WsServer( new Chat() ) ), 8080 ); echo "Server started "; $server->run();
<!DOCTYPE html> <html> <head> <title>WebSocket client</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> </head> <body> <input type="text" id="message" placeholder="Enter your message"> <button id="send">Send</button> <ul id="messages"></ul> <script> $(function () { var socket = new WebSocket('ws://localhost:8080'); socket.onopen = function() { console.log('Connection opened'); }; socket.onclose = function() { console.log('Connection closed'); }; socket.onmessage = function(event) { var data = JSON.parse(event.data); $('#messages').append($('<li>').text(data.message)); }; $('#send').click(function() { var message = $('#message').val(); socket.send(JSON.stringify({message: message})); }); }); </script> </body> </html>
以上がPHP で WebSocket を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。