Maison  >  Article  >  développement back-end  >  Utilisez php pour développer Websocket afin de créer une fonction de suivi logistique en temps réel

Utilisez php pour développer Websocket afin de créer une fonction de suivi logistique en temps réel

王林
王林original
2023-12-18 15:39:43669parcourir

Utilisez php pour développer Websocket afin de créer une fonction de suivi logistique en temps réel

Utilisez PHP pour développer WebSocket afin de créer une fonction de suivi logistique en temps réel

Introduction :
Avec le développement de l'industrie de la logistique, le suivi en temps réel de l'état des marchandises est devenu une exigence importante. Dans le passé, la méthode basée sur des sondages pour obtenir des informations sur les marchandises ne pouvait pas répondre aux exigences en temps réel. Grâce à la technologie WebSocket, le serveur peut transmettre activement les données au client et fournir des fonctions de suivi logistique en temps réel.

Cet article expliquera comment utiliser PHP pour développer WebSocket et fournira des exemples de code spécifiques pour implémenter des fonctions de suivi logistique en temps réel.

  1. Introduction à WebSocket
    WebSocket est un protocole de communication en duplex intégral sur une seule connexion TCP. Il implémente le transfert de données en temps réel du serveur au client en maintenant une connexion persistante. Par rapport aux requêtes HTTP traditionnelles, WebSocket est plus adapté aux scénarios d'application ayant des exigences élevées en temps réel.
  2. Développer WebSocket avec PHP
    En PHP, nous pouvons utiliser la bibliothèque Ratchet pour implémenter la fonctionnalité WebSocket. Ratchet est une bibliothèque WebSocket basée sur PHP qui fournit une interface permettant de développer facilement des serveurs WebSocket.

Tout d'abord, nous devons introduire la bibliothèque Ratchet dans le projet. Vous pouvez gérer les dépendances du projet via Composer. Utilisez la commande suivante pour installer la bibliothèque Ratchet :

composer require cboden/ratchet

Ensuite, nous créons un fichier d'entrée pour le serveur WebSocket, tel que server.php :

<?php
require 'vendor/autoload.php';

use RatchetMessageComponentInterface;
use RatchetConnectionInterface;
use RatchetServerIoServer;
use RatchetHttpHttpServer;
use RatchetWebSocketWsServer;

class MyWebSocketApp 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();
    }
}

$server = IoServer::factory(
    new HttpServer(
        new WsServer(
            new MyWebSocketApp()
        )
    ),
    8080
);

$server->run();

Dans le code ci-dessus, nous créons un fichier nommé La classe MyWebSocketApp implémente l'interface MessageComponentInterface de Ratchet. Cette interface définit les fonctions de rappel des opérations de base du serveur WebSocket, notamment onOpen, onMessage, onClose, onError, etc.

Dans la fonction de rappel onOpen, nous ajoutons la nouvelle connexion client au stockage d'objets $clients. Lorsqu'un message est reçu, dans la fonction de rappel onMessage, nous pouvons traiter le message reçu, comme la mise à jour des informations logistiques, etc., et parcourir tous les clients via une boucle foreach pour transmettre activement les dernières informations logistiques au client.

Enfin, créez une instance de serveur WebSocket à l'aide de la classe IoServer, spécifiez le numéro de port d'écoute et utilisez la méthode run pour démarrer le serveur.

  1. Implémentation côté client
    Côté client, nous pouvons utiliser l'API WebSocket intégrée au navigateur pour communiquer avec le serveur WebSocket.
<!DOCTYPE html>
<html>
<head>
<script>
var ws = new WebSocket("ws://localhost:8080");

ws.onopen = function() {
    console.log("Socket连接已打开");
};

ws.onmessage = function(evt) {
    // 处理接收到的物流信息,并在页面上进行展示
    var message = evt.data;
    console.log("收到消息:" + message);
    // ...
};

ws.onclose = function() {
    console.log("Socket连接已关闭");
};

</script>
</head>
<body>
</body>
</html>

Dans le code ci-dessus, nous créons un objet WebSocket et spécifions l'adresse et le port du serveur WebSocket. Nous pouvons ensuite gérer l'interaction avec le serveur via des fonctions de rappel telles que onopen, onmessage et onclose.

Lorsque la connexion WebSocket est établie avec succès, la fonction de rappel onopen sera déclenchée et nous pourrons effectuer les opérations associées ici. Lorsqu'un message poussé par le serveur est reçu, la fonction de rappel onmessage sera déclenchée, où nous pourrons traiter les informations logistiques reçues et les afficher sur la page. Lorsque la connexion est fermée, la fonction de rappel onclose sera déclenchée.

  1. Exemple de fonction de suivi logistique
    Nous pouvons la combiner avec le système logistique réel pour transmettre des informations logistiques en temps réel au client.

Côté serveur, vous pouvez surveiller les mises à jour des informations logistiques via des tâches planifiées ou la surveillance d'événements, et transmettre les dernières informations logistiques au client.

// 假设我们有一个函数getLogisticsInfo,用于获取最新的物流信息
$logisticsInfo = getLogisticsInfo();
// 将最新的物流信息转为JSON格式,并推送给所有客户端
$msg = json_encode($logisticsInfo);
foreach ($this->clients as $client) {
    $client->send($msg);
}

Côté client, vous pouvez recevoir les dernières informations logistiques poussées par le serveur et les afficher.

ws.onmessage = function(evt) {
    var message = evt.data;
    var logisticsInfo = JSON.parse(message);
    // 根据最新物流信息,更新页面显示内容
    // ...
};

Résumé :
En développant WebSocket avec PHP, nous pouvons implémenter des fonctions de suivi logistique basées sur le push de données en temps réel. Utilisez la bibliothèque Ratchet pour développer un serveur WebSocket et interagir avec le serveur via l'API WebSocket. Le serveur peut obtenir et transmettre les dernières informations logistiques au client via des tâches planifiées ou une surveillance des événements, réalisant ainsi la fonction de suivi logistique en temps réel.
Grâce aux exemples de code fournis dans cet article, vous pourrez mieux comprendre et utiliser PHP pour développer WebSocket et mettre en œuvre des fonctions de suivi logistique en temps réel.

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