PHP Websocket 開発ガイド: リアルタイム フライト クエリ関数
はじめに:
Websocket は、クライアントとサーバー間の全二重通信を実装するプロトコルです。 、リアルタイムのメッセージングとデータ更新を実現できます。この記事では、PHP を使用して Websocket を開発する方法を紹介し、リアルタイム フライト クエリ機能と組み合わせた具体的なコード例を示します。
1. Websocket プロトコルを理解する:
Websocket プロトコルは TCP に基づくプロトコルであり、次の特徴があります:
2. Websocket の PHP 開発のためのツールの選択:
PHP 自体は Websocket をネイティブにサポートしませんが、サードパーティのライブラリを通じて実装できます。この記事では、Ratchet ライブラリを使用して Websocket を実装することを選択します。
Ratchet は、Websocket 開発プロセスを簡素化する強力なツールとインターフェイスを提供する PHP Websocket ライブラリです。
3. プロジェクトの準備:
まず、Composer がプロジェクトにインストールされていることを確認し、コマンド ラインで次のコマンドを実行して Ratchet ライブラリをインストールします:
composer require cboden /ratchet
インストールが成功したら、新しい PHP ファイル (例:index.php) を作成し、Websocket サーバーのコードの作成を開始します。
4. サーバー コードの例:
以下は、リアルタイム フライト クエリの機能を実装する Websocket サーバーの簡単なコード例です。
// 引入Ratchet库 require 'vendor/autoload.php'; use RatchetMessageComponentInterface; use RatchetConnectionInterface; use GuzzleHttpClient; class FlightQuery implements MessageComponentInterface { protected $clients; public function __construct() { $this->clients = new SplObjectStorage; } public function onOpen(ConnectionInterface $conn) { // 存储所有的客户端连接 $this->clients->attach($conn); echo "有新的连接:(#{$conn->resourceId}) "; } public function onMessage(ConnectionInterface $from, $msg) { // 接收到消息时的处理 // 在这里进行航班查询的逻辑 $result = $this->queryFlight($msg); // 向所有的客户端发送查询结果 foreach ($this->clients as $client) { $client->send($result); } } public function onClose(ConnectionInterface $conn) { // 连接关闭时的处理 $this->clients->detach($conn); echo "连接关闭:(#{$conn->resourceId}) "; } public function onError(ConnectionInterface $conn, Exception $e) { // 错误处理 echo "发生错误:(#{$conn->resourceId}): {$e->getMessage()} "; $conn->close(); } private function queryFlight($flightNumber) { // 使用外部的航班查询API $httpClient = new Client(); $response = $httpClient->get("https://api.flightquery.com/flight/{$flightNumber}"); return $response->getBody(); } } // 启动Websocket服务器 $server = IoServer::factory( new HttpServer( new WsServer( new FlightQuery() ) ), 8080 ); echo "Websocket服务器启动成功 "; $server->run();
上記のコードは、ポート 8080 で実行され、クライアント メッセージを受信してフライト クエリを実行し、クエリ結果をすべてのクライアントに送信する単純な Websocket サーバーを実装しています。
5. クライアント コードの例:
以下は、WebSocket サーバーとの接続とメッセージの送受信を実現する、単純な HTML ページのサンプル コードです。
<!DOCTYPE html> <html> <head> <title>实时航班查询</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script> $(function () { // 连接Websocket服务器 var websocket = new WebSocket('ws://localhost:8080'); // 接收Websocket消息的处理 websocket.onmessage = function (event) { var result = event.data; // 处理航班查询结果 $("#result").text(result); }; // 发送航班查询请求 $("#query-button").click(function () { var flightNumber = $("#flight-number").val(); websocket.send(flightNumber); }); }); </script> </head> <body> <h1>实时航班查询</h1> <input type="text" id="flight-number" placeholder="请输入航班号"> <button id="query-button">查询</button> <div id="result"></div> </body> </html>
上記のコードは、便名を入力してクエリ リクエストを送信するための入力ボックスとボタンを含む、単純な HTML ページを実装しています。クエリ結果はリアルタイムでページに表示されます。
6. 実行とテスト:
上記のサーバー コードを Index.php に保存し、クライアント コードを HTML ファイルに保存します。ブラウザで HTML ファイルを開いて、実行してテストします。フライトクエリ機能。
概要:
上記の Websocket 開発ガイドとコード例を通じて、リアルタイム フライト クエリの機能を実現できます。 Websocket の双方向通信機能により、クライアントとサーバーがリアルタイムでメッセージを通信できるようになり、アプリケーションのリアルタイム性と応答性が向上します。 Ratchet ライブラリを使用すると、Websocket アプリケーションをより迅速に開発できます。
もちろん、実際の開発では、特定のビジネス ニーズに基づいてさらなる開発や調整が必要になる場合がありますが、この記事で提供されているサンプル コードは参考および基本的な使用を目的としています。 Websocket 開発の成功を祈っています。
以上がリアルタイム フライト クエリ機能を実装するための PHP Websocket 開発ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。