Maison >développement back-end >tutoriel php >Guide de développement PHP Websocket pour implémenter la fonction de distribution de tâches en temps réel

Guide de développement PHP Websocket pour implémenter la fonction de distribution de tâches en temps réel

WBOY
WBOYoriginal
2023-12-02 10:17:331187parcourir

PHP Websocket开发指南,实现实时任务分发功能

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 :

  1. Démarrage du serveur : Démarrez un serveur Websocket via le mode ligne de commande PHP.
  2. Processus de prise de contact : lorsque le client envoie une requête HTTP au serveur, le serveur vérifie la demande et établit une connexion de prise de contact.
  3. Établissement de la connexion : après la connexion via handshake, une connexion persistante est établie entre le serveur et le client, permettant une communication bidirectionnelle.
  4. Transmission de données : les données peuvent être transmises entre le serveur et le client via le protocole Websocket et répondre immédiatement.

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);
    }
}

Étape 3 :Exécutez le serveur Websocket

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 :

rrreee

Étape 5 : Testez la communication Websocket

Ouvrez client.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.
  1. Section 4 : Implémentation de la fonction de répartition des tâches en temps réel
  2. Grâce à PHP Websocket, nous pouvons facilement implémenter la fonction de répartition des tâches en temps réel. Dans le code de l'étape 2, vous pouvez voir que la méthode 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.
  3. L'exemple de code est le suivant :
rrreee🎜Conclusion : 🎜Grâce aux étapes ci-dessus, nous avons appris les principes de base et l'utilisation de PHP Websocket, et avons présenté comment implémenter la fonction de distribution de tâches en temps réel. En utilisant PHP Websocket, nous pouvons facilement réaliser une communication et des mises à jour en temps réel, améliorant ainsi l'expérience d'interaction des utilisateurs. J'espère que cet article vous aidera à comprendre et à utiliser PHP Websocket. 🎜🎜Références : 🎜🎜🎜Site officiel de Ratchet : https://github.com/ratchetphp/Ratchet 🎜🎜Site officiel de Swoole : https://www.swoole.com/🎜🎜

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn