Heim  >  Artikel  >  Backend-Entwicklung  >  Verwenden Sie PHP, um Websocket zu entwickeln und eine Echtzeit-Logistikverfolgungsfunktion zu erstellen

Verwenden Sie PHP, um Websocket zu entwickeln und eine Echtzeit-Logistikverfolgungsfunktion zu erstellen

王林
王林Original
2023-12-18 15:39:43669Durchsuche

Verwenden Sie PHP, um Websocket zu entwickeln und eine Echtzeit-Logistikverfolgungsfunktion zu erstellen

Verwenden Sie PHP, um WebSocket zu entwickeln und eine Echtzeit-Logistikverfolgungsfunktion zu erstellen.

Einführung:
Mit der Entwicklung der Logistikbranche ist die Echtzeitverfolgung des Frachtstatus zu einer wichtigen Anforderung geworden. In der Vergangenheit konnte die auf Abfragen basierende Methode zum Erhalten von Frachtinformationen die Echtzeitanforderungen nicht erfüllen. Mithilfe der WebSocket-Technologie kann der Server aktiv Daten an den Client übertragen und Logistikverfolgungsfunktionen in Echtzeit bereitstellen.

In diesem Artikel wird die Verwendung von PHP zur Entwicklung von WebSocket vorgestellt und spezifische Codebeispiele zur Implementierung von Echtzeit-Logistikverfolgungsfunktionen bereitgestellt.

  1. Einführung in WebSocket
    WebSocket ist ein Protokoll für die Vollduplex-Kommunikation über eine einzelne TCP-Verbindung. Es implementiert einen Daten-Push in Echtzeit vom Server zum Client, indem es eine dauerhafte Verbindung aufrechterhält. Im Vergleich zu herkömmlichen HTTP-Anfragen eignet sich WebSocket besser für Anwendungsszenarien mit hohen Echtzeitanforderungen.
  2. WebSocket mit PHP entwickeln
    In PHP können wir die Ratchet-Bibliothek verwenden, um die WebSocket-Funktionalität zu implementieren. Ratchet ist eine PHP-basierte WebSocket-Bibliothek, die eine Schnittstelle für die einfache Entwicklung von WebSocket-Servern bietet.

Zuerst müssen wir die Ratchet-Bibliothek in das Projekt einführen. Sie können Projektabhängigkeiten über Composer verwalten. Verwenden Sie den folgenden Befehl, um die Ratchet-Bibliothek zu installieren:

composer require cboden/ratchet

Als nächstes erstellen wir eine Eintragsdatei für den WebSocket-Server, z. B. 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();

Im obigen Code erstellen wir eine Datei mit dem Namen Die MyWebSocketApp-Klasse implementiert die MessageComponentInterface-Schnittstelle von Ratchet. Diese Schnittstelle definiert die grundlegenden Betriebsrückruffunktionen des WebSocket-Servers, einschließlich onOpen, onMessage, onClose, onError usw.

In der onOpen-Callback-Funktion fügen wir die neue Client-Verbindung zum Objektspeicher $clients hinzu. Wenn eine Nachricht empfangen wird, können wir in der Rückruffunktion onMessage die empfangene Nachricht verarbeiten, z. B. Logistikinformationen aktualisieren usw., und alle Clients durch eine foreach-Schleife durchlaufen, um die neuesten Logistikinformationen aktiv an den Client weiterzuleiten.

Erstellen Sie abschließend eine WebSocket-Serverinstanz mithilfe der IoServer-Klasse, geben Sie die Nummer des Überwachungsports an und verwenden Sie die Ausführungsmethode, um den Server zu starten.

  1. Clientseitige Implementierung
    Auf der Clientseite können wir die integrierte WebSocket-API des Browsers verwenden, um mit dem WebSocket-Server zu kommunizieren.
<!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>

Im obigen Code erstellen wir ein WebSocket-Objekt und geben die Adresse und den Port des WebSocket-Servers an. Anschließend können wir die Interaktion mit dem Server über Rückruffunktionen wie onopen, onmessage und onclose abwickeln.

Wenn die WebSocket-Verbindung erfolgreich hergestellt wurde, wird die Onopen-Rückruffunktion ausgelöst und wir können hier entsprechende Vorgänge ausführen. Wenn eine vom Server gepushte Nachricht empfangen wird, wird die Onmessage-Callback-Funktion ausgelöst, mit der wir die empfangenen Logistikinformationen verarbeiten und auf der Seite anzeigen können. Wenn die Verbindung geschlossen wird, wird die Onclose-Rückruffunktion ausgelöst.

  1. Beispiel für eine Logistikverfolgungsfunktion
    Wir können sie mit dem tatsächlichen Logistiksystem kombinieren, um dem Kunden Logistikinformationen in Echtzeit zu übermitteln.

Auf der Serverseite können Sie die Aktualisierungen der Logistikinformationen durch geplante Aufgaben oder Ereignisüberwachung überwachen und die neuesten Logistikinformationen an den Client weiterleiten.

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

Auf der Clientseite können Sie die neuesten vom Server gepushten Logistikinformationen empfangen und anzeigen.

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

Zusammenfassung:
Durch die Entwicklung von WebSocket mit PHP können wir Logistikverfolgungsfunktionen basierend auf Echtzeit-Daten-Push implementieren. Verwenden Sie die Ratchet-Bibliothek, um einen WebSocket-Server zu entwickeln und über die WebSocket-API mit dem Server zu interagieren. Der Server kann durch geplante Aufgaben oder Ereignisüberwachung die neuesten Logistikinformationen abrufen und an den Client weiterleiten und so die Funktion der Echtzeit-Logistikverfolgung realisieren.
Anhand der in diesem Artikel bereitgestellten Codebeispiele können Sie PHP besser verstehen und verwenden, um WebSocket zu entwickeln und Echtzeit-Logistikverfolgungsfunktionen zu implementieren.

Das obige ist der detaillierte Inhalt vonVerwenden Sie PHP, um Websocket zu entwickeln und eine Echtzeit-Logistikverfolgungsfunktion zu erstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn