So verwenden Sie webSocket zum Aktualisieren des Echtzeitwetters in Vue

So verwenden Sie webSocket zum Aktualisieren des Echtzeitwetters in Vue

Vorwort

Verwenden Sie webSocket in Vue, um ein einfaches Echtzeit-Updatemodul für das Wetter zu erstellen.

Informationen zu WebSocket-Operationen und Beispielen:

1.WebSocket-Verbindung

Bildbeschreibung hier einfügen

2. Daten empfangen

Bildbeschreibung hier einfügen

3. Wiederverbindungsmechanismus

Bildbeschreibung hier einfügen

webSocket

1. Über webSocket

WebSocket ist ein von HTML5 bereitgestelltes Protokoll, das Vollduplex-Kommunikation über eine einzelne TCP-Verbindung ermöglicht. Der Browser sendet über JavaScript eine Anforderung an den Server, eine WebSocket-Verbindung herzustellen. Nachdem die Verbindung hergestellt wurde, können Client und Server über die TCP-Verbindung direkt Daten austauschen.

Nachdem Sie die WebSocket-Verbindung hergestellt haben, können Sie über die Methode send() Daten an den Server senden und die vom Server zurückgegebenen Daten über das Ereignis onmessage empfangen.

var Socket = neuer webSocket(URL, [Protokoll]);

Protokoll ist optional und gibt akzeptable Unterprotokolle an

2. Unterschiede zum AJAX Wheel

Heutzutage verwenden viele Websites Ajax-Polling, um Push-Technologie zu implementieren. Beim Polling sendet der Browser in einem bestimmten Zeitintervall (z. B. jede Sekunde) eine HTTP-Anfrage an den Server und der Server gibt dann die neuesten Daten an den Browser des Clients zurück. Dieses traditionelle Modell hat einen offensichtlichen Nachteil: Der Browser muss kontinuierlich Anfragen an den Server senden. Die HTTP-Anfrage kann jedoch einen langen Header enthalten, von dem die wirklich gültigen Daten nur einen kleinen Teil ausmachen. Dadurch wird offensichtlich viel Bandbreite und andere Ressourcen verschwendet.

Das durch HTML5 definierte WebSocket-Protokoll kann Serverressourcen und Bandbreite besser sparen und mehr Echtzeitkommunikation ermöglichen.

Bildbeschreibung hier einfügen

3.webSocket-Ereignisse

Bildbeschreibung hier einfügen

4. Ein einfaches Beispiel

Lassen Sie uns mit der obigen kurzen Einführung eine WebSocket-Instanz erstellen und ausprobieren:

Funktion webSocketTest() {
    if ("webSocket" im Fenster){
        alert("Ihr Browser unterstützt webSocket!");
        // Öffne einen WebSocket
        var ws = neuer webSocket("ws://localhost:8080/test");
        ws.onopen = Funktion() {
            // WebSocket ist verbunden, verwenden Sie die Methode send(), um Daten zu senden ws.send("send data");
            console.log("Daten werden gesendet...");
        };
        
        ws.onmessage = Funktion (evt) { 
            // Empfangene Daten var data = evt.data;
            console.log("Daten empfangen...");
        };

        ws.onerror = Funktion () {
            // Verbindungsfehler console.log('Verbindungsfehler...');
        }

        ws.onclose = Funktion() { 
            // Schließen Sie den WebSocket
            console.log("Verbindung geschlossen..."); 
        };
    } anders {
        // Der Browser unterstützt kein WebSocket
        alert("Ihr Browser unterstützt webSocket nicht!");
    }
}

Wie Sie sehen, ist die Verwendung von webSocket eigentlich sehr einfach:

1. Stellen Sie fest, ob der Browser webSocket unterstützt.
2. Erstellen Sie eine WebSocket-Instanz;
3. Listen Sie die WebSocket-Ereignisse auf und behandeln Sie die entsprechenden Geschäfte in den entsprechenden Ereignissen.

Die gleiche Methode wird in Vue verwendet

Wetter-Update

Hier demonstrieren wir die Implementierung des zuvor erwähnten Echtzeit-Wetteraktualisierungseffekts. Das Projektframework ist vue\element.

Basiscode

<!-- Für das Layout verwendetes Element, einfach direkt verwenden -->
<el-popover
        Platzierung="unten"
        :title="wetter.title"
        Auslöser="schweben"
        :inhalt="wetter.cont">
    <div slot="Referenz" class="Wetter">
        <img :src="wetter.url" alt="">
    </div>
</el-popover>
Standard exportieren {
        Daten() {
            zurückkehren {
                Wetter:
                    Stadtname: '',
                    Titel: '-- Stadt / --℃',
                    Fortsetzung: '--',
                    Wettercode: '0',
                    URL: ''
                }
            }
        },
        Methoden: {
            // Das Wetter abrufen async getTheWeather() {
                // Fordern Sie zunächst die aktuellen Wetterbedingungen über die Schnittstelle an let res = await this.$Http.getWeather({});
                wenn(res.code === 200) {
                    // Hier werden die von der Schnittstelle erhaltenen Wetterdaten in „Wetter in Daten“ eingefügt …

                    //Öffnen Sie dann den WebSocket, um dies in Echtzeit zu empfangen. this.connectWebSocket();
                }
            },
            //WebSocket
            verbindeWebSocket () {
                lass _this = dies;
                if ("WebSocket" im Fenster) {
                    console.log("Ihr Browser unterstützt WebSocket!");
                    // Öffne einen WebSocket
                    let url ='xxxxxxxxxxx'; // Liefert Ihnen die Adresse für den Daten-Push let ws = new webSocket(`ws://${url}`);
                    // Verbindung erfolgreich ws.onopen = function () {
                        // Web Socket ist verbunden, verwenden Sie die Methode send(), um Daten zu senden ws.send("Dies sind die gesendeten Testdaten");
                        console.log('Verbindung erfolgreich');
                    };
                    // Daten zur Verarbeitung empfangen ws.onmessage = function (evt) {
                        Lassen Sie empfangene_Nachricht = evt.data;
                        // Hier werden die Wetterdaten in Daten eingefügt, anschließend wird das Wetter aktualisiert …
                    };
                    // Verbindungsfehler ws.onerror = function () {
                        console.log('Verbindungsfehler...');
                    }
                    // Verbindung geschlossen ws.onclose = function () {
                        // Schließen Sie den WebSocket
                        console.log("Verbindung geschlossen...");
                    }
                } anders {
                    // Der Browser unterstützt WebSocket nicht
                    console.log("Ihr Browser unterstützt WebSocket nicht!");
                }
            },

        },
        montiert() {
            // Lokales Wetter abrufen this.getTheWeather();
        }
    }

Bildmaterial

Den Wettercodewert besprichst Du am besten mit dem Backend für Wetterbildinformationen, damit Du den Wert direkt austauschen kannst.

Bildbeschreibung hier einfügen

this.weather.url = erfordert(`@/assets/img/weather/${weatherInfo.weatherCode}@2x.png`);

Wiederverbindungsmechanismus

Schließlich wird ein Wiederverbindungsmechanismus eingeführt.

Einfacher Wiederverbindungsmechanismus, verwenden Sie einfach setTimeout. Wenn der Verbindungsfehler auftritt/die Verbindung geschlossen wird, verwenden Sie einen Timer, um die Methode connectWebSocket erneut auszuführen und die Verbindung wiederherzustellen. Bei diesem Vorgang können jedoch zahlreiche Probleme auftreten, daher wurde ein eleganteres Plug-In zum Wiederherstellen der Verbindung gefunden: ReconnectingWebSocket.

ReconnectingWebSocket ist eigentlich eine gekapselte webSocketTest-Instanz mit einem Wiederverbindungsmechanismus. Wenn die Verbindung getrennt wird, wird auf benutzerfreundliche Weise versucht, die Verbindung wiederherzustellen, bis sie wiederhergestellt ist. Auch die Verwendung ist relativ einfach, einfach importieren und erstellen:

// Importieren Sie ReconnectingWebSocket von „@/util/ReconnectingWebSocket“;

Standard exportieren {
    Daten() {
        zurückkehren {
            ...
        }
    },
    Methoden: {
        ...
        verbindeWebSocket() {
            lass _this = dies;
                if ("WebSocket" im Fenster) {
                    console.log("Ihr Browser unterstützt WebSocket!");
                    // Öffne einen WebSocket
                    let url ='xxxxxxxxxxx'; // Gib die Adresse für den Daten-Push an - let ws = new webSocket(`ws://${url}`); // Wegwerfen + let ws = new ReconnectingWebSocket(`ws://${url}`); // Ändere dies // Verbindung erfolgreich ws.onopen = function () {
                        // Web Socket ist verbunden, verwenden Sie die Methode send(), um Daten zu senden ws.send("Dies sind die gesendeten Testdaten");
                        console.log('Verbindung erfolgreich');
                    };
                    // Daten zur Verarbeitung empfangen ws.onmessage = function (evt) {
                        ...
                    };
                    // Verbindungsfehler ws.onerror = function () {
                        console.log('Verbindungsfehler...');
                    }
                    // Verbindung geschlossen ws.onclose = function () {
                        // Schließen Sie den WebSocket
                        console.log("Verbindung geschlossen...");
                    }
                } anders {
                    // Der Browser unterstützt WebSocket nicht
                    console.log("Ihr Browser unterstützt WebSocket nicht!");
                }
        }
    }
}

ReconnectingWebSocket ist eine einzelne JS-Datei, die online durchsucht werden kann.

Dies ist das Ende dieses Artikels über die Verwendung von webSocket zum Aktualisieren des Echtzeitwetters in Vue. Weitere relevante Inhalte zum Aktualisieren des Echtzeitwetters in Vue webSocket finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Vue verwendet WebSocket, um die Chat-Funktion zu simulieren
  • Beispielanalyse der Verwendung von WebSockets durch Vue
  • Der Prozess der Verwendung von SockJS zur Implementierung der WebSocket-Kommunikation in Vue
  • Die richtige Art, WebSocket in einem Vue-Projekt zu verwenden

<<:  Durch Kombinieren von Einfügen und Auswählen wird die Methode „Einfügen des Maximalwerts eines Felds in der Datenbank + 1“ implementiert.

>>:  Implementierungsprozess des Nginx-Hochverfügbarkeitsclusters

Artikel empfehlen

Diskussion über die Möglichkeit zum Öffnen von Website-Hyperlinks

Ein neues Fenster wird geöffnet. Vorteile: Wenn d...

Einführung in Linux-Komprimierungs- und Dekomprimierungsbefehle

Inhaltsverzeichnis Gängige Komprimierungsformate:...

Detailliertes Tutorial zur Installation von ElasticSearch 6.4.1 auf CentOS7

1. Laden Sie das ElasticSearch 6.4.1-Installation...

Analyse des Benchmarking-Prozesses von Sysbench für MySQL

Vorwort 1. Benchmarking ist eine Art Leistungstes...

Zwei Möglichkeiten zur Verwendung von React in React HTML

Grundlegende Verwendung <!DOCTYPE html> <...

So handhaben Sie den Token-Ablauf in WeChat-Miniprogrammen

Inhaltsverzeichnis Fazit zuerst Frage Lösung Verw...

CSS und JS für eine romantische Meteorschauer-Animation

1. Rendern 2. Quellcode HTML < Textkörper >...

So implementieren Sie Dual-Machine-Master und Backup mit Nginx+Keepalived

Vorwort Lassen Sie mich zunächst Keepalived vorst...

Tutorial zur MySQL-Optimierung: Große Paging-Abfrage

Inhaltsverzeichnis Hintergrund LIMIT-Optimierung ...

So testen Sie die maximale Anzahl von TCP-Verbindungen in Linux

Vorwort Es besteht ein Missverständnis bezüglich ...

Node-Skript realisiert automatische Anmelde- und Lotteriefunktion

Inhaltsverzeichnis 1. Einleitung 2. Vorbereitung ...