Guide de développement PHP Websocket : fonction de requête de vol en temps réel
Introduction :
Websocket est un protocole qui implémente une communication en duplex intégral entre le client et le serveur, permettant la messagerie en temps réel et les mises à jour des données. Cet article présentera comment utiliser PHP pour développer Websocket et donnera des exemples de code spécifiques combinés à la fonction de requête de vol en temps réel.
1. Comprendre le protocole Websocket :
Le protocole Websocket est un protocole basé sur TCP et présente les caractéristiques suivantes :
2. Sélection d'outils pour le développement PHP de Websocket :
PHP lui-même ne prend pas en charge nativement Websocket, mais il peut être implémenté via des bibliothèques tierces. Dans cet article, nous choisissons d'utiliser la bibliothèque Ratchet pour implémenter Websocket.
Ratchet est une bibliothèque PHP Websocket qui fournit des outils et des interfaces puissants pour simplifier le processus de développement de Websocket.
3. Préparation du projet :
Tout d'abord, assurez-vous que Composer a été installé dans votre projet, puis exécutez la commande suivante sur la ligne de commande pour installer la bibliothèque Ratchet :
composer require cboden/ratchet
Après une installation réussie, créez un nouveau fichier PHP (par exemple : index.php), commencez à écrire le code du serveur Websocket.
4. Exemple de code de serveur :
Ce qui suit est un exemple simple de code d'un serveur Websocket, qui implémente la fonction de requête de vol en temps réel.
// 引入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();
Le code ci-dessus implémente un simple serveur Websocket, fonctionnant sur le port 8080, recevant les messages des clients et effectuant des requêtes de vol, puis envoyant les résultats de la requête à tous les clients.
5. Exemple de code client :
Ce qui suit est un exemple de code pour une page HTML simple, qui implémente la connexion et l'envoi et la réception de messages avec le serveur Websocket.
<!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>
Le code ci-dessus implémente une page HTML simple, comprenant une zone de saisie et un bouton pour saisir les numéros de vol et envoyer des demandes de requête. Les résultats de la requête seront affichés sur la page en temps réel.
6. Exécutez et testez :
Enregistrez le code du serveur ci-dessus dans index.php et enregistrez le code client dans un fichier HTML. Ouvrez le fichier HTML via le navigateur pour exécuter et tester la fonction de requête de vol en temps réel.
Résumé :
Grâce au guide de développement Websocket et aux exemples de code mentionnés ci-dessus, nous pouvons réaliser la fonction de requête de vol en temps réel. La fonctionnalité de communication bidirectionnelle de Websocket permet au client et au serveur de communiquer des messages en temps réel, rendant nos applications plus réactives et en temps réel. En utilisant la bibliothèque Ratchet, nous pouvons développer des applications Websocket plus rapidement.
Bien sûr, le développement réel peut nécessiter des développements et des ajustements supplémentaires en fonction des besoins spécifiques de l'entreprise, mais l'exemple de code fourni dans cet article est destiné à référence et à une utilisation de base. Je vous souhaite du succès dans le développement de Websocket !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!