Websocket mit Node.js

Webanwendungen haben sich geändert und weiterentwickelt. Dadurch unterscheiden sich die Anforderungen der Benutzer von denen, als das erste Verbindungsprotokoll im Netzwerk erstellt wurde. Infolgedessen hat sich das HTTP- Protokoll im Laufe der Jahre weiterentwickelt, erreicht jedoch immer noch kein Echtzeitniveau, wie z. B. eine TCP- Verbindung zwischen zwei Computern.

Diese Einschränkungen haben Entwickler und Benutzer nicht geschädigt, sondern sind zu einer Quelle von Motivation und Kreativität geworden. Sie haben Lösungen hervorgebracht, mit denen wir nicht nur ein Übertragungssystem in Echtzeit, sondern auch über HTTP emulieren können. fast einheimische Form.

Websocket
Hier kommt der Websocket her , ein relativ neues Protokoll, das nur von den modernsten Browsern unterstützt wird. Dadurch können wir HTTP von all seinen Einschränkungen befreien und somit effektiv über die GET- Header kommunizieren.

Websocket befindet sich noch in der Phase der aktiven Reifung, weshalb wir es möglicherweise nicht in neuen Lösungen finden. Glücklicherweise verfügen wir in Node.js bereits über einige Tools, mit denen wir sie handhaben können, ohne uns auf unseren Einfallsreichtum verlassen zu müssen, um Tools auf niedrigerer Ebene zu erstellen.

Anforderungen
Dies ist ein erweitertes Tutorial, daher benötigen wir zunächst eine funktionierende Installation von Node.js in unserem System. Wir können uns dieses Tutorial ansehen, bevor wir es weiter vertiefen. Außerdem benötigen wir Administratorrechte, um die Bibliotheken zu installieren Was werden wir verwenden? Wir sollten mit JavaScript- Konzepten wie Callback und anonymen Funktionen vertraut sein. Schließlich benötigen wir einen Texteditor wie Sublime Text , mit dem wir die verschiedenen Codes in den Beispielen schreiben können.

Erstellen Sie ein Websocket

Um eine Anwendung zu erstellen, die es uns ermöglicht, Websockets zu verwenden, müssen wir zuerst eine kleine Struktur erstellen. Dies ist sehr einfach, aber notwendig. Diese Struktur besteht aus:

– Una carpeta donde almacenaremos los archivos de nuestro proyecto. 1 – Ein Ordner, in dem wir die Dateien unseres Projekts speichern.

– Un archivo llamado servidor.js , este archivo como su nombre lo indica será el servidor a través del cual vamos a establecer la conexión en tiempo real utilizando los Websockets . 2 – Eine Datei mit dem Namen servidor.js . Diese Datei gibt an, dass es sich um den Server handelt, über den die Verbindung in Echtzeit über die Websockets hergestellt wird .

– Un archivo llamado cliente.html , este archivo será la interfaz para comunicarnos con nuestro servidor a través del navegador, es necesario tener el mismo para que podamos enviar y recibir la información correspondiente. 3 – Eine Datei namens client.html . Diese Datei ist die Schnittstelle zur Kommunikation mit unserem Server über den Browser. Sie muss vorhanden sein, damit wir die entsprechenden Informationen senden und empfangen können.

See also  So beenden Sie das Senden von Informationen von meinem PC an Ubuntu

Da wir jetzt unsere Struktur definiert haben, können wir beginnen, einige Codezeilen zu werfen. Dazu müssen wir zunächst eine externe Bibliothek mit dem Namen ws in unserer Umgebung installieren, da dies die Verwendung des betreffenden Protokolls ermöglicht. Um diese Bibliothek zu installieren, müssen wir nur unsere Node.js- Konsole öffnen. Wir befinden uns in dem Ordner, in dem sich unsere Dateien befinden, und geben den folgenden Befehl ein:

 npm install ws 

Wenn wir es ausführen, können wir das folgende Ergebnis in unserer Kommandokonsole sehen:

websockets-nodejs.jpg

Sobald wir die Bibliothek installiert haben, können wir unsere Arbeit fortsetzen. Jetzt müssen wir in unsere Server- Datei.js den folgenden Code schreiben. Lassen Sie uns zuerst sehen, woraus er besteht. Dann werden wir ihn erklären:

 var WSServer = require ('ws'). Server, wss = neuer WSServer ({port: 8085}); wss.on ('Verbindung', Funktion (Socket) { socket.on ('message', function (msg) { console.log ('Received:', msg, ' n', 'From the IP:', socket.upgradeReq.connection.remoteAddress); if (msg === 'Hallo') {socket.send ('Wenn es funktioniert!'); } }); socket.on ('close', function (code, desc) { console.log ('Offline:' + code + '-' + desc); }); }); 

Das erste, was wir tun, ist, die ws- Bibliothek, die wir gerade installiert haben, anzufordern und sofort in derselben Anweisung die Klasse Server aufzurufen. Dann erstellen wir eine Instanz, mit der wir einen Server erstellen, der auf Port 8085 ausgeführt wird. Dieser Port kann ein beliebiger sein dass wir in diesem Fall Zugriff haben, wird der 8085 verwendet, damit es keinen Konflikt mit anderen Diensten gibt, die sich derzeit in dieser Testumgebung befinden.

Da wir jetzt unsere Instanz definiert haben, wenden wir die Methode an. am () für das Verbindungsereignis haben wir dann im Rückruf desselben ein Objekt übergeben, das als Socket bezeichnet wird , mit dem wir die Nachrichten vom Client empfangen und eine Routine geschrieben haben, die besagt, dass der Server eine Nachricht zurückgibt, wenn wir das Wort “Hallo” erhalten , wo wir wiederum auch etwas in der Kommandokonsole drucken werden. Wenn wir die Verbindung beenden, wird nur eine Nachricht in der Konsole angezeigt.

See also  So schützen Sie Webverzeichnisse mit .htaccess und .htpasswd

Sobald wir unseren Server haben, ist es Zeit, unseren Client zu erstellen. In der Datei client.html definieren wir eine Struktur, in der wir HTML-Tags und ein JavaScript platzieren , das als Link zu unserem Server fungiert. Mal sehen, wie unsere Datei aussieht:

 <! DOCTYPE html> <html lang = "en"> <head> <meta charset = "UTF-8"> <title> Websockets-Client </ title> </ head> <body> <input id = msg> <button id = send> Senden </ button> <div id = exit> </ div> <script> (function () { var ws = new WebSocket ("ws: // localhost: 8085"), output = document.getElementById ('exit'), send = document.getElementById ('send'); Funktion logStr (eventStr, msg) { return '<div>' + eventStr + ':' + msg + '</ div>'; } send.addEventListener ('click', function () { var msg = document.getElementById ('msg'). value; ws.send (msg); output.innerHTML + = logStr ('Sent', msg); }); ws.onmessage = Funktion (e) { output.innerHTML + = logStr ('Received', e.data); }; ws.onclose = Funktion (e) { output.innerHTML + = logStr ('Disconnected', e.code + '-' + e.type); }; ws.onerror = Funktion (e) { output.innerHTML + = logStr ('Error', e.data); }; } ()); </ script> </ body> </ html> 

Der HTML- Teil ist recht einfach. Wir haben eine Texteingabe und eine Senden-Schaltfläche sowie eine Div- Ausgabe, die die Informationen vom Server empfängt, um sie dem Benutzer anzuzeigen. Das Interessante ist das <script> -Tag, in dem wir als erstes ein Objekt vom Typ WebSocket erstellen und den Pfad angeben, in dem es sich befinden soll. In unserem Fall ist es der localhost: 8085, und wir können sehen, dass es bereits Sinn macht, was Wir haben auf dem server.js . Dann verknüpfen wir unsere Versand-, Text- und Ausgabeelemente mit Variablen, die wir verwenden können.

Dann definieren wir jede der Methoden, die wir vom Server empfangen können. Jedes Mal, wenn wir etwas senden, wird dies dank der send () -Methode in unserer Ausgabe aufgezeichnet. Die andere Methode, die wir verwenden, ist onmessage (), die nur aktiviert wird, wenn unser Server antwortet und das Ergebnis in unserem HTML-Code hinzugefügt wird.

Abschließend verwenden wir die Methoden onclose () und onerror () . Die erste gibt eine Meldung aus, wenn die Verbindung zum Websocket unterbrochen oder geschlossen wurde, und die zweite informiert uns, falls ein Fehler aufgetreten ist. Damit können wir nur den Server in unserer Konsole starten und unser Beispiel in die Tat umsetzen, dazu verwenden wir den folgenden Befehl:

 Knoten server.js 

Dadurch wird der Server hochgefahren, aber um die Funktionalität unseres Codes zu überprüfen, müssen wir unsere Datei client.html in unserem bevorzugten Browser ausführen und etwas in das Textfeld schreiben und den Sendeknopf drücken. Dadurch wird die Kommunikation mit dem Websocket hergestellt und wir können die Datei sehen Antwort per Konsole:

See also  Wie erstelle ich ein Excel-Makro 2019, 2016

websockets-nodejs-2.jpg

Im Bild können wir sehen, wie die Befehlskonsole die empfangene Nachricht druckt und sogar die IP-Adresse registriert, von der sie die Daten empfängt. Dies ist das, was wir in unserer Datei server.js programmiert haben. Dort geben wir auch an, dass wir ein senden würden, wenn wir das Wort “Hallo” erhalten würden Antwortnachricht, die genau das ist, was wir im Browserfenster im selben Bild sehen. Wenn wir nun den Browser aktualisieren, ist die Verbindung unterbrochen. Dies wird auch von unserer Anwendung registriert.

websockets-nodejs-3.jpg

Wenn wir die Verbindung in unserer Konsole mit STRG + C schließen , um den Server zu stoppen, löst unser Browser den Fehlerhandler aus und es wird eine neue Nachricht angezeigt:

websockets-nodejs-4.jpg

Wenn wir Beobachter waren, haben wir möglicherweise etwas Wichtiges bemerkt. Zu keinem Zeitpunkt mussten wir den Browser aktualisieren oder eine Ajax- Anfrage stellen, um Antworten zu erhalten. Alles war direkt bidirektional mit WebSockets . Dies wird als Echtzeit bezeichnet.

Andere Lösungen

Was wir gezeigt haben, ist eine der rudimentärsten und manuellsten Formen, die es gibt. Es funktioniert jedoch, um zu wissen, wie der Workflow aussieht , aber die tatsächliche Funktionalität und die Bereitschaft für Produktionsumgebungen, die wir mit der socket.io- Bibliothek erzielen, machen dies möglich Das gleiche wie im Tutorial, jedoch in einer wesentlich kompakteren und weniger fehleranfälligen Version des Entwicklers, sodass wir uns nur auf die Logik der Anwendung und nicht so sehr auf den technischen Teil der Anwendung konzentrieren können.

Um socket.io zu installieren, müssen wir einfach ein npm install socket.io erstellen und mit diesem aus dem Repository die neueste stabile Version der Bibliothek herunterladen, mit der wir unsere Entwicklung starten können.

Damit haben wir dieses Tutorial abgeschlossen, mit dem wir einen wichtigen Schritt innerhalb von Node.js unternommen haben , um zu wissen, wie man die Websockets verwendet . Diese Technologie wird immer wichtiger, da sie uns hilft, Anwendungen zu erstellen, an die im Web nie gedacht wurde . Es ist auch wichtig, dass wir das Protokoll dokumentieren, um das Potenzial dessen zu verstehen, was wir durch die einfache Entwicklung von Anwendungen erreichen können.

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *