Heim  >  Artikel  >  Backend-Entwicklung  >  So fügen Sie Ihrer Website mithilfe von PHP und MQTT Echtzeitbenachrichtigungen hinzu

So fügen Sie Ihrer Website mithilfe von PHP und MQTT Echtzeitbenachrichtigungen hinzu

王林
王林Original
2023-07-08 20:43:441504Durchsuche

So fügen Sie Ihrer Website mit PHP und MQTT Echtzeit-Benachrichtigungsfunktionen hinzu

Echtzeit-Benachrichtigungsfunktionen für Webanwendungen werden auf modernen Websites immer beliebter. Echtzeitbenachrichtigungen können für verschiedene Zwecke verwendet werden, z. B. für Live-Chat, Echtzeitkommentare und Benachrichtigungen über neue Nachrichten. In diesem Artikel erklären wir, wie Sie mithilfe des PHP- und MQTT-Protokolls Echtzeit-Benachrichtigungsfunktionen zu Ihrer Website hinzufügen.

Was ist das MQTT-Protokoll?

MQTT (Message Queuing Telemetry Transport) ist ein leichtes Nachrichtenübertragungsprotokoll, das für eine effiziente Sofortkommunikation entwickelt wurde. Es ist für Netzwerkumgebungen mit geringer Bandbreite und instabilen Netzwerken konzipiert und eignet sich sehr gut für die Nachrichtenübertragung für IoT-Anwendungen.

Das MQTT-Protokoll basiert auf dem Publish/Subscribe-Modell. Der Client kann ein bestimmtes Thema (Thema) abonnieren. Wenn neue Nachrichten zum Thema veröffentlicht werden, erhalten Abonnenten Benachrichtigungen in Echtzeit.

Vorbereitung

Bevor wir beginnen, müssen wir sicherstellen, dass die folgenden Bedingungen erfüllt sind:

  1. Ein Server, auf dem ein MQTT-Broker wie Mosquitto ausgeführt wird.
  2. PHP-Entwicklungsumgebung, einschließlich Installation der Mosquitto MQTT-Erweiterung.

Installieren Sie die Mosquitto MQTT-Erweiterung und Sie können den pecl-Befehl verwenden:

pecl install Mosquitto-alpha

Implementieren Sie die Echtzeit-Benachrichtigungsfunktion

In diesem Beispiel erstellen wir eine einfache Chat-Anwendung, mit der Benutzer Nachrichten senden und von anderen gesendete Nachrichten empfangen können Benutzer in Echtzeit. Wir werden PHP und MQTT verwenden, um diese Funktionalität zu implementieren.

Zuerst müssen wir einen MQTT-Client erstellen, eine Verbindung mit dem MQTT-Broker herstellen und ein Thema abonnieren. Wir werden die phpMQTT-Bibliothek verwenden, um die Implementierung des MQTT-Clients zu vereinfachen. Die phpMQTT-Bibliothek kann über den folgenden Code installiert werden:

composer require bluerhinos/phpmqtt

Dann erstellen wir eine Datei namens chat.php und fügen den folgenden Code hinzu: chat.php的文件,并添加以下代码:

<?php
require("phpMQTT.php");

$mqtt = new phpMQTT("localhost", 1883, "clientId_" . uniqid());
if ($mqtt->connect()) {
    $mqtt->subscribe("chat_room", 0);
    while ($mqtt->proc()) {
    }
    $mqtt->close();
} else {
    echo "连接MQTT代理失败";
}

在上述代码中,我们首先创建了一个mqtt实例,并使用localhost1883作为MQTT代理的主机和端口。然后,我们通过$mqtt->connect()方法建立与MQTT代理的连接。如果连接成功,则使用$mqtt->subscribe("chat_room", 0)订阅一个名为chat_room的主题。最后,我们使用$mqtt->proc()方法来保持与MQTT代理的连接。

接下来,我们创建一个名为index.html的前端文件,并添加以下代码:

<!DOCTYPE html>
<html>
<head>
    <title>实时聊天</title>
    <meta charset="utf-8">
    <style>
        #chat_log {
            height: 300px;
            overflow-y: scroll;
        }
    </style>
</head>
<body>
    <h1>实时聊天</h1>
    <div id="chat_log"></div>
    <input type="text" id="message" placeholder="请输入消息">
    <button id="send_button">发送</button>
  
    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
    <script>
        var clientId = 'web_' + new Date().getTime();
        var mqtt = new Paho.MQTT.Client("localhost", 1883, clientId);
        var topic = "chat_room";
      
        mqtt.onConnectionLost = function(responseObject) {
            console.log('连接丢失');
        };
      
        mqtt.onMessageArrived = function(message) {
            var msg = message.payloadString;
            $("#chat_log").append('<p>' + msg + '</p>');
        };
      
        mqtt.connect({
            onSuccess: function() {
                mqtt.subscribe(topic);
            }
        });
      
        $(document).ready(function() {
            $("#send_button").click(function() {
                var message = $("#message").val();
                mqtt.send(topic, message);
                $("#message").val('');
            });
        });
    </script>
</body>
</html>

在上述代码中,我们首先在mqtt.onConnectionLost方法中处理与MQTT代理的连接丢失事件。在mqtt.onMessageArrived方法中,我们接收到新消息时向聊天记录中添加该消息。

通过调用mqtt.connect()方法并提供一个回调函数,在连接成功后订阅chat_room主题。然后,我们使用jQuery在页面加载时通过$("#send_button").click方法来实现发送消息功能。

最后,我们在浏览器中打开index.htmlrrreee

Im obigen Code erstellen wir zunächst ein mqtt Instanz und verwenden Sie localhost und 1883 als Host und Port des MQTT-Brokers. Anschließend stellen wir über die Methode $mqtt->connect() eine Verbindung mit dem MQTT-Broker her. Wenn die Verbindung erfolgreich ist, verwenden Sie $mqtt->subscribe("chat_room", 0), um ein Thema namens chat_room zu abonnieren. Schließlich verwenden wir die Methode $mqtt->proc(), um die Verbindung zum MQTT-Broker aufrechtzuerhalten.

Als nächstes erstellen wir eine Frontend-Datei namens index.html und fügen den folgenden Code hinzu:

rrreee

Im obigen Code fügen wir zunächst den folgenden Code in mqtt.onConnectionLost Die Methode behandelt das Verbindungsverlustereignis mit dem MQTT-Broker. Wenn wir in der Methode <code>mqtt.onMessageArrived eine neue Nachricht erhalten, fügen wir diese dem Chat-Verlauf hinzu. 🎜🎜Durch den Aufruf der Methode mqtt.connect() und die Bereitstellung einer Rückruffunktion abonnieren Sie das Thema chat_room, nachdem die Verbindung erfolgreich hergestellt wurde. Dann verwenden wir jQuery, um die Funktion zum Senden von Nachrichten über die Methode $("#send_button").click zu implementieren, wenn die Seite geladen wird. 🎜🎜Zuletzt öffnen wir die Datei index.html im Browser und Sie können die Chat-Oberfläche sehen. 🎜🎜Zusammenfassung🎜🎜In diesem Artikel wird erläutert, wie Sie mithilfe der PHP- und MQTT-Protokolle Echtzeit-Benachrichtigungsfunktionen zu Ihrer Website hinzufügen. Wir haben mithilfe der phpMQTT-Bibliothek eine einfache Chat-Anwendung erstellt, mit der Benutzer in Echtzeit Nachrichten senden und Nachrichten von anderen Benutzern empfangen können. Anhand dieses Beispiels können wir sehen, wie das MQTT-Protokoll verwendet werden kann, um eine effiziente Sofortkommunikation zu erreichen, die den Anforderungen moderner Websites entspricht. 🎜

Das obige ist der detaillierte Inhalt vonSo fügen Sie Ihrer Website mithilfe von PHP und MQTT Echtzeitbenachrichtigungen hinzu. 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