Comment utiliser PHP et WebSocket pour développer des applications de surveillance en temps réel
Introduction :
Les applications de surveillance en temps réel deviennent de plus en plus importantes dans le développement d'applications Internet d'aujourd'hui. La communication HTTP traditionnelle ne peut pas répondre aux exigences en temps réel, tandis que le protocole WebSocket peut établir une longue connexion entre le navigateur et le serveur pour établir une communication bidirectionnelle en temps réel. En tant que langage de programmation largement utilisé, PHP peut également être combiné avec WebSocket pour développer des applications de surveillance en temps réel.
Cet article expliquera comment utiliser PHP et WebSocket pour développer des applications de surveillance en temps réel et fournira des exemples de code spécifiques.
1. Comprendre le protocole WebSocket
Le protocole WebSocket est un protocole de communication full-duplex basé sur le protocole TCP. En utilisant le protocole WebSocket, une longue connexion peut être établie entre le navigateur et le serveur, réalisant ainsi deux temps réel. communication à plusieurs voies. Comparé au protocole HTTP traditionnel, le protocole WebSocket est plus adapté au développement d'applications de surveillance en temps réel.
2. Implémenter le serveur WebSocket
Pour implémenter le serveur WebSocket en PHP, vous pouvez utiliser certaines bibliothèques existantes, telles que Ratchet et ReactPHP. Ces bibliothèques offrent des fonctionnalités riches qui simplifient le processus de développement des serveurs WebSocket.
En prenant Ratchet comme exemple, vous devez d'abord installer la bibliothèque Ratchet. Utilisez Composer pour installer, la commande est la suivante :
composer require cboden/ratchet
Ce qui suit est un exemple de code simple du serveur WebSocket :
use RatchetMessageComponentInterface; use RatchetConnectionInterface; require 'vendor/autoload.php'; class MyServer 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 onMessage(ConnectionInterface $from, $msg) { echo "Received message from client: {$from->resourceId} "; $data = json_decode($msg, true); // 处理接收到的消息 // ... } public function onClose(ConnectionInterface $conn) { $this->clients->detach($conn); echo "Client disconnected: {$conn->resourceId} "; } public function onError(ConnectionInterface $conn, Exception $e) { echo "An error occurred: {$e->getMessage()} "; $conn->close(); } } $server = new RatchetApp('localhost', 8080); $server->route('/monitor', new MyServer(), ['*']); $server->run();
Dans le code ci-dessus, nous définissons une classe nommée MyServer, qui implémente l'interface MessageComponentInterface dans Ratchet, qui définit le rappel méthode du serveur WebSocket. Nous pouvons implémenter une logique d'interaction de message entre le serveur et le client dans ces méthodes de rappel.
3. Utilisez JavaScript pour établir une connexion WebSocket
Du côté du navigateur, nous pouvons utiliser JavaScript pour établir une connexion WebSocket et établir une communication bidirectionnelle.
var socket = new WebSocket('ws://localhost:8080/monitor'); socket.addEventListener('open', function(event) { console.log('Connected to server'); }); socket.addEventListener('message', function(event) { console.log('Received message from server: ', event.data); // 处理接收到的消息 // ... }); socket.addEventListener('close', function(event) { console.log('Disconnected from server'); }); // 发送消息给服务器 function sendMessage(message) { socket.send(message); }
Le code JavaScript ci-dessus crée un objet WebSocket et établit une connexion avec le serveur. Lors de la réception d'un message du serveur, nous pouvons le traiter dans la fonction de rappel de l'événement message. En appelant la méthode send de l'objet WebSocket, vous pouvez envoyer un message au serveur.
4. Exemples de développement d'applications de surveillance en temps réel
Les méthodes de mise en œuvre spécifiques des applications de surveillance en temps réel varient en fonction des exigences de l'application. Ce qui suit prend comme exemple une simple application de surveillance du cours des actions en temps réel.
Côté serveur, nous pouvons récupérer les données boursières et envoyer les données à tous les clients connectés au serveur. L'exemple de code est le suivant :
use RatchetMessageComponentInterface; use RatchetConnectionInterface; require 'vendor/autoload.php'; class StockMonitor extends MyServer { protected $stocks = [ 'AAPL' => 0, // 苹果公司股票 'GOOGL' => 0, // 谷歌公司股票 'MSFT' => 0, // 微软公司股票 ]; public function onOpen(ConnectionInterface $conn) { parent::onOpen($conn); $this->sendStockPrices($conn); // 发送股票价格给新连接的客户端 } public function sendStockPrices(ConnectionInterface $conn) { // 模拟获取股票价格 foreach ($this->stocks as $symbol => $price) { $this->stocks[$symbol] = rand(100, 200); // 随机生成股票价格 } $conn->send(json_encode($this->stocks)); } } $server = new RatchetApp('localhost', 8080); $server->route('/monitor', new StockMonitor(), ['*']); $server->run();
Côté client, nous pouvons recevoir le cours de l'action envoyé par le serveur et l'afficher. L'exemple de code est le suivant :
var stockPrices = {}; function displayStockPrices(prices) { // 展示股票价格 // ... } var socket = new WebSocket('ws://localhost:8080/monitor'); socket.addEventListener('open', function(event) { console.log('Connected to server'); }); socket.addEventListener('message', function(event) { var prices = JSON.parse(event.data); stockPrices = prices; displayStockPrices(prices); }); socket.addEventListener('close', function(event) { console.log('Disconnected from server'); }); // 发送消息给服务器 function sendMessage(message) { socket.send(message); }
Dans le code ci-dessus, nous utilisons une variable globale stockPrices pour enregistrer les données de cours des actions. Lors de la réception d'un message du serveur, nous mettons à jour la variable et appelons la fonction displayStockPrices pour l'affichage.
Conclusion :
L'utilisation de PHP et WebSocket pour développer des applications de surveillance en temps réel peut réaliser une communication bidirectionnelle en temps réel et répondre aux besoins des applications de surveillance en temps réel. Les développeurs peuvent utiliser des bibliothèques existantes telles que Ratchet pour simplifier le processus de développement et utiliser JavaScript pour établir des connexions WebSocket et traiter les messages envoyés par le serveur. Grâce à des exemples de développement d'applications de surveillance en temps réel, nous pouvons mieux comprendre et appliquer la technologie 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!