Guide de développement PHP Websocket, pour implémenter la fonction de distribution des tâches en temps réel, des exemples de code spécifiques sont nécessaires
Introduction :
Dans les applications Web modernes, la fonction de distribution des tâches en temps réel devient de plus en plus importante. Grâce à la répartition des tâches en temps réel, une communication et des mises à jour en temps réel peuvent être obtenues, offrant aux utilisateurs une meilleure expérience interactive. PHP Websocket est une technologie utilisée pour réaliser une communication en temps réel. Cet article présentera les principes de base et l'utilisation de PHP Websocket et fournira des exemples de code spécifiques pour aider les lecteurs à comprendre et à mettre en œuvre des fonctions de distribution de tâches en temps réel.
Section 1 : Qu'est-ce que Websocket
Websocket est un protocole de communication full-duplex. Il est établi sur une connexion TCP et permet une communication bidirectionnelle en temps réel entre le serveur et le client via le processus de prise de contact. Par rapport au protocole HTTP traditionnel, Websocket présente une latence réseau plus faible et des performances en temps réel plus élevées.
Section 2 : Principe de PHP Websocket
Le principe de fonctionnement de PHP Websocket peut être brièvement décrit comme les étapes suivantes :
Section 3 : Comment utiliser PHP Websocket
PHP Websocket peut être implémenté via des bibliothèques PHP telles que Ratchet ou Swoole Ce qui suit utilise Ratchet comme exemple.
Étape 1 : Installer la bibliothèque Ratchet
Tout d'abord, vous devez installer la bibliothèque Ratchet à l'aide de la commande Composer. Exécutez la commande suivante dans la ligne de commande :
composer require cboden/ratchet
Étape 2 : Créer un serveur Websocket
Créez un fichier server.php
dans le dossier du projet et écrivez le code suivant dans le fichier : server.php
文件,并在文件中编写以下代码:
use RatchetMessageComponentInterface; use RatchetConnectionInterface; require 'vendor/autoload.php'; class MyWebSocket 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) { // Task distribution logic foreach ($this->clients as $client) { $client->send($msg); } } public function onClose(ConnectionInterface $conn) { $this->clients->detach($conn); echo "Client disconnected: {$conn->resourceId} "; } public function onError(ConnectionInterface $conn, Exception $e) { echo "An error occured: {$e->getMessage()} "; $conn->close(); } } $app = new RatchetApp('localhost', 8080); $app->route('/', new MyWebSocket, ['*']); $app->run();
步骤3:运行Websocket服务器
在命令行中执行以下命令,启动Websocket服务器:
php server.php
步骤4:创建Websocket客户端
在项目文件夹中创建一个client.html
文件,并在文件中编写以下代码:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Websocket Client</title> </head> <body> <script type="text/javascript"> const socket = new WebSocket('ws://localhost:8080'); socket.onopen = function() { console.log('Connected to server'); }; socket.onmessage = function(e) { console.log('Received message:', e.data); }; socket.onclose = function() { console.log('Connection closed'); }; </script> </body> </html>
步骤5:测试Websocket通信
在浏览器中打开client.html
,并打开开发者工具,在控制台中可以看到连接成功的日志。此时,服务器和客户端之间建立了一个Websocket连接,可以进行实时通信。
第四节:实现实时任务分发功能
通过PHP Websocket,我们可以轻松实现实时任务分发功能。在步骤2的代码中,可以看到onMessage
方法定义了任务分发的逻辑。当服务器接收到客户端发送的任务数据后,通过遍历所有连接的客户端,并使用send
public function onMessage(ConnectionInterface $from, $msg) { // Task distribution logic foreach ($this->clients as $client) { $client->send($msg); } }
Exécutez la commande suivante dans la ligne de commande pour démarrer le serveur Websocket :
rrreeeÉtape 4 : Créez le client Websocket
Créez un fichier client.html
dans le dossier du projet et ajoutez Écrivez le code suivant dans :
Étape 5 : Testez la communication Websocket
Ouvrezclient.html
dans le navigateur et ouvrez les outils de développement. Vous pouvez voir le journal de la connexion réussie dans la console. À ce stade, une connexion Websocket est établie entre le serveur et le client, permettant une communication en temps réel. onMessage
définit la logique de répartition des tâches. Lorsque le serveur reçoit les données de tâche envoyées par le client, il parcourt tous les clients connectés et envoie les données de tâche à chaque client à l'aide de la méthode send
. 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!