リアルタイム交通情報照会機能を実現する PHP Websocket 開発ガイド
開発を開始する
3.1 Websocket 依存ライブラリをインストールする
Composer のインストールにパスするRatchet ライブラリは、PHP で Websocket アプリケーションを開発するための一般的な選択肢です。ターミナルで次のコマンドを実行してインストールできます:
composer require cboden/ratchet
3.2 Websocket サーバーの作成
プロジェクト ルートで、ディレクトリに server.php
ファイルを作成し、次のコードを追加します。
<?php require 'vendor/autoload.php'; use RatchetServerIoServer; use RatchetHttpHttpServer; use RatchetWebSocketWsServer; $server = IoServer::factory( new HttpServer( new WsServer( new TrafficInfo() ) ), 8080 // 服务器端口号 ); $server->run();
このコードは、Websocket サーバーを作成し、ポート 8080 をリッスンします。このうち、TrafficInfo
は、これから作成する Websocket アプリケーション クラスです。
3.3 Websocket アプリケーション クラスの作成
プロジェクト ルート ディレクトリに TrafficInfo.php
ファイルを作成し、次のコードを追加します。
<?php use RatchetMessageComponentInterface; use RatchetConnectionInterface; class TrafficInfo implements MessageComponentInterface { private $connections; public function __construct() { $this->connections = new SplObjectStorage(); } public function onOpen(ConnectionInterface $conn) { // 当一个新的连接建立时触发 $this->connections->attach($conn); } public function onMessage(ConnectionInterface $from, $msg) { // 当接收到客户端发送的消息时触发 // 在这里处理相应的逻辑,并将数据发送给所有连接的客户端 $this->broadcast($msg); } public function onClose(ConnectionInterface $conn) { // 当一个客户端连接关闭时触发 $this->connections->detach($conn); } public function onError(ConnectionInterface $conn, Exception $e) { // 当发生错误时触发 $conn->send($e->getMessage()); $conn->close(); } private function broadcast($msg) { foreach ($this->connections as $conn) { $conn->send($msg); } } }
このコードは ## を定義します。 #TrafficInfo クラスを作成し、
MessageComponentInterface インターフェイスを実装します。このクラスでは、
onOpen、
onMessage、
onClose、
onError などのメソッドをオーバーライドして、クライアントとの対話を処理します。接続されているすべてのクライアントにデータを送信するための
broadcast メソッドを実装します。
ファイルを作成し、次のコードを追加します。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Traffic Info</title> </head> <body> <h1>Traffic Info</h1> <div id="traffic-info"></div> <script> var socket = new WebSocket('ws://localhost:8080'); socket.onmessage = function (event) { var data = JSON.parse(event.data); // 处理接收到的实时交通信息 document.getElementById('traffic-info').innerHTML = data.message; }; socket.onclose = function () { // 服务器连接关闭时触发 console.log('Connection closed'); }; </script> </body> </html>
上記のファイルを Apache サーバーのルート ディレクトリに配置し、コマンド ラインを使用してプロジェクトのルート ディレクトリに入り、次のコマンドを実行して開始します。 Websocket サーバー:
php server.php
index.html ファイルを開いて、リアルタイムの交通情報を受信します。
この記事では、PHP を使用したリアルタイム交通情報クエリ機能の開発プロセスと、対応するコード例を紹介します。 Websocket テクノロジーは、リアルタイムのデータ更新と対話の実現に優れたパフォーマンスを発揮し、多くのリアルタイム通信のニーズを満たすことができます。この記事があなたのお役に立てれば幸いです、読んでいただきありがとうございます!
以上がリアルタイム交通情報クエリ機能を実装するためのPHP Websocket開発ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。