PHP WebSocket 開発例: 特定の機能の実装方法のデモンストレーション
WebSocket は、永続的な接続の確立を可能にするリアルタイム双方向通信用のプロトコルです。可能です。 WebSocket は、リアルタイム機能や即時通信を実装する必要がある Web アプリケーションにとって強力なツールです。この記事では、PHP WebSocket 開発を使用して特定の機能を実装する方法を説明します。
WebSocket サーバーの作成
まず、WebSocket サーバーを作成する必要があります。 PHP では、Ratchet ライブラリを使用して WebSocket サーバーを実装できます。まず、Composer を通じて Ratchet ライブラリをインストールします:
composer require cboden/ratchet
次に、WebSocket サーバーを定義する server.php
ファイルを作成します:
<?php require __DIR__ . '/vendor/autoload.php'; use RatchetServerIoServer; use RatchetHttpHttpServer; use RatchetWebSocketWsServer; class MyWebSocketServer implements RatchetMessageComponentInterface { // 实现WebSocket服务器的方法 } $server = IoServer::factory( new HttpServer( new WsServer( new MyWebSocketServer() ) ), 8080 ); $server->run();
この例では、 MyWebSocketServer
という名前のクラスを使用して、WebSocket サーバーのインターフェイス メソッドを実装します。このクラスは、受信したメッセージ、接続イベント、終了イベントなどを処理します。
MyWebSocketServer
クラスに、メッセージ、接続、およびクローズ イベントを処理する次のメソッドを追加します。
class MyWebSocketServer implements RatchetMessageComponentInterface { protected $clients; public function __construct() { $this->clients = new SplObjectStorage(); } public function onOpen(RatchetConnectionInterface $conn) { $this->clients->attach($conn); echo "New connection! ({$conn->resourceId}) "; } public function onClose(RatchetConnectionInterface $conn) { $this->clients->detach($conn); echo "Connection {$conn->resourceId} has disconnected "; } public function onMessage(RatchetConnectionInterface $from, $msg) { foreach ($this->clients as $client) { $client->send($msg); } } public function onError(RatchetConnectionInterface $conn, Exception $e) { echo "An error has occurred: {$e->getMessage()} "; $conn->close(); } }
上記のコードでは、## を使用します。 # SplObjectStorage は、サーバーに接続されているすべてのクライアントを保存します。新しい接続が存在する場合、それを
$clients に保存し、新しい接続のリソース ID を出力します。接続が閉じられると、切断されたクライアントを
$clients から削除し、そのリソース ID を出力します。メッセージを受信すると、接続されているすべてのクライアントをループして各クライアントにメッセージを送信します。
これで、WebSocket サーバーとサービス ロジックの準備が整いました。次のコマンドを実行してサーバーを起動できます:
php server.phpサーバーはポート 8080 をリッスンし、クライアント接続、メッセージ、およびシャットダウン イベントの受信と処理を開始します。
var socket = new WebSocket("ws://localhost:8080"); socket.onopen = function() { console.log("Connected to server"); }; socket.onmessage = function(event) { console.log("Received message: " + event.data); }; socket.onclose = function() { console.log("Server connection closed"); }; // 发送消息 function sendMessage(message) { socket.send(message); }
sendMessage 関数を呼び出してメッセージを送信できます。メッセージを受信すると、メッセージの内容がブラウザのコンソールに表示されます。
以上がPHP WebSocket 開発例: 特定の機能の実装方法のデモンストレーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。