Tutoriel de développement PHP Websocket : Construire un système de négociation d'actions en temps réel
Introduction :
Avec le développement d'Internet, les performances en temps réel sont devenues une exigence importante pour de nombreuses applications. En tant que système impliquant une grande quantité de données en temps réel, le système de négociation d'actions doit être capable d'afficher aux utilisateurs les modifications des cours des actions et les mises à jour des données de négociation en temps réel. Dans le modèle de développement traditionnel, la communication entre le front-end et le back-end se fait en envoyant continuellement des requêtes et en recevant des réponses. Cependant, cette méthode présente un certain retard et ne peut pas répondre aux exigences du temps réel.
Afin de résoudre ce problème, la technologie WebSocket a vu le jour. WebSocket est un protocole qui établit une connexion persistante entre un client et un serveur, permettant une communication bidirectionnelle en temps réel. Dans cet article, nous utiliserons un exemple pour présenter comment utiliser PHP WebSocket pour développer un système de négociation d'actions en temps réel.
Étape 1 : Créer un environnement de base
Tout d'abord, nous devons créer un environnement de développement de base. Dans cet exemple, nous utiliserons PHP comme langage backend et Composer pour gérer les bibliothèques de dépendances de PHP. Veuillez vous assurer que PHP et Composer sont installés.
Étape 2 : Présentez la bibliothèque de dépendances WebSocket
WebSocket est un protocole standardisé et PHP lui-même ne fournit pas de support WebSocket. Par conséquent, nous devons introduire une bibliothèque tierce pour implémenter les fonctions WebSocket. Dans cet exemple, nous utiliserons la bibliothèque Ratchet. Dans le répertoire de votre projet, exécutez la commande suivante pour installer Ratchet :
composer require cboden/ratchet
Étape 3 : Écrivez le code côté serveur WebSocket
Nous écrivons d'abord un code côté serveur WebSocket. Créez un fichier nommé Server.php
et entrez le code suivant : Server.php
的文件,输入以下代码:
<?php require 'vendor/autoload.php'; use RatchetMessageComponentInterface; use RatchetConnectionInterface; class Server implements MessageComponentInterface { protected $clients; public function __construct() { $this->clients = new SplObjectStorage; } public function onOpen(ConnectionInterface $conn) { $this->clients->attach($conn); } public function onMessage(ConnectionInterface $from, $msg) { foreach ($this->clients as $client) { $client->send($msg); } } public function onClose(ConnectionInterface $conn) { $this->clients->detach($conn); } public function onError(ConnectionInterface $conn, Exception $e) { $conn->close(); } } $webSock = new ReactSocketServer('0.0.0.0:8080', $loop); $webServer = new RatchetServerIoServer( new RatchetHttpHttpServer( new RatchetWebSocketWsServer( new Server() ) ), $webSock ); $loop->run();
上面的代码中,我们首先引入了必要的依赖库和命名空间。然后我们定义了一个名为 Server
的类,该类实现了 Ratchet 的 MessageComponentInterface
接口。在 Server
类中,我们定义了几个事件回调函数,分别对应 WebSocket 的几个不同的状态。
最后,我们使用 Ratchet 的各种组件和类来建立 WebSocket 服务器,并启动服务器。
步骤四:编写前端代码
在本例中,我们使用 JavaScript 来编写客户端的代码。创建一个名为 index.html
的文件,输入以下代码:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>实时股票交易系统</title> </head> <body> <div id="stock"></div> <script type="text/javascript"> var socket = new WebSocket('ws://localhost:8080'); socket.onmessage = function(event) { var stockData = JSON.parse(event.data); var stockElement = document.getElementById('stock'); stockElement.innerHTML = "股票名称:" + stockData.name + "<br>股票价格:" + stockData.price; }; </script> </body> </html>
在上面的代码中,我们首先创建了一个 WebSocket 对象,指定了服务器的地址。然后我们定义了一个 onmessage
事件处理函数,当服务器发送消息时被调用。在这个处理函数中,我们解析服务器发送过来的 JSON 格式的股票数据,并将其展示在页面上。
步骤五:启动服务器
现在,我们可以使用命令行来启动 WebSocket 服务器。在项目目录下,执行以下命令:
php Server.php
步骤六:测试系统
在浏览器中打开 index.html
文件,你将看到一个空白的页面。如果一切正常,当服务器发送股票数据时,页面将实时更新股票的名称和价格。
你可以在服务器端的 onMessage
rrreee
Server
qui implémente l'interface MessageComponentInterface
de Ratchet. Dans la classe Server
, nous définissons plusieurs fonctions de rappel d'événements, qui correspondent à plusieurs états différents de WebSocket. Enfin, nous utilisons les différents composants et classes de Ratchet pour construire le serveur WebSocket et démarrer le serveur. Étape 4 : Écrire du code front-end🎜🎜Dans cet exemple, nous utilisons JavaScript pour écrire du code côté client. Créez un fichier nommé index.html
et entrez le code suivant : 🎜rrreee🎜Dans le code ci-dessus, nous créons d'abord un objet WebSocket et spécifions l'adresse du serveur. Ensuite, nous définissons un gestionnaire d'événements onmessage
qui est appelé lorsque le serveur envoie un message. Dans cette fonction de traitement, nous analysons les données boursières au format JSON envoyées par le serveur et les affichons sur la page. 🎜🎜Étape 5 : Démarrez le serveur🎜🎜Maintenant, nous pouvons utiliser la ligne de commande pour démarrer le serveur WebSocket. Dans le répertoire du projet, exécutez la commande suivante : 🎜rrreee🎜Étape 6 : Testez le système🎜🎜Ouvrez le fichier index.html
dans le navigateur, vous verrez une page vierge. Si tout fonctionne correctement, lorsque le serveur envoie les données boursières, la page sera mise à jour en temps réel avec le nom et le prix du titre. 🎜🎜Vous pouvez modifier le contenu du message envoyé dans la méthode onMessage
côté serveur pour simuler des mises à jour des données boursières en temps réel. 🎜🎜Conclusion : 🎜🎜Grâce à cet exemple, nous avons appris à utiliser PHP WebSocket pour développer un système de négociation d'actions en temps réel. La technologie WebSocket peut bien répondre aux exigences en temps réel, rendant la communication entre le front-end et le back-end plus efficace et en temps réel. Dans les applications réelles, nous pouvons étendre davantage ce système, par exemple en ajoutant l'authentification des utilisateurs, le stockage de données et d'autres fonctions. J'espère que cet article vous sera utile, merci d'avoir lu ! 🎜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!