Heim >Web-Frontend >Front-End-Fragen und Antworten >So pushen Sie regelmäßig NodeJS
Mit der rasanten Entwicklung des mobilen Internets werden der Echtzeitcharakter und das Benutzererlebnis von Webanwendungen immer wichtiger, insbesondere in Bereichen wie Echtzeitkommunikation, Online-Spielen und dem Internet der Dinge. Um den Anforderungen dieser Bereiche gerecht zu werden, müssen wir einige Technologien zur Implementierung von Push-Diensten verwenden. Als effiziente serverseitige JavaScript-Ausführungsumgebung bietet Node.js eine relativ einfache Lösung für Echtzeit-Push.
Wie implementiert man einen Push-Dienst in Node.js? Im Folgenden sind einige häufig verwendete Methoden aufgeführt:
Polling ist die grundlegendste Implementierungsmethode. Der Server sendet kontinuierlich Anfragen an den Client, und der Client fragt dann in entsprechenden Abständen den Server ab, um festzustellen, ob neue Daten vorliegen. Diese Methode ist einfach zu implementieren, weist jedoch eine geringe Effizienz auf. Mit zunehmender Anzahl von Verbindungen nimmt der Druck auf den Server weiter zu.
Das Comet-Modell ist ein Modell, bei dem der Server Daten an den Client sendet, ohne dass eine Client-Anfrage erforderlich ist, normalerweise mithilfe von Long-Polling und Streaming ) auf zwei Arten. Diese Methode führt zu vielen langen Verbindungen und erhöht den Serverdruck.
Das WebSocket-Protokoll ist ein TCP-Protokoll mit bidirektionaler Kommunikation, das uns dabei helfen kann, Echtzeitkommunikation zu erreichen. Über das WebSocket-Protokoll können wir eine dauerhafte Verbindung zwischen dem Client und dem Server herstellen, sodass der Client Push-Informationen vom Server in Echtzeit empfangen kann. Diese Methode kann auch den Anforderungsdruck auf den Server verringern, erfordert jedoch, dass sowohl der Client als auch der Server das WebSocket-Protokoll unterstützen.
Ähnlich wie WebSocket kann das Server-Sent Events-Protokoll auch serverseitige Push-Dienste implementieren. Es handelt sich um ein unidirektionales Kommunikationsprotokoll, das auf dem HTTP-Protokoll basiert und es dem Server ermöglicht, einige Ereignisinformationen an den Client zu übertragen, und der Client muss diese Ereignisse nur abhören. Im Vergleich zu WebSocket ist das Protokoll „Server-Sent Events“ leichter und kann auch einen Teil der komplexen Logik von WebSocket abschirmen.
Unter den oben genannten vier Methoden gelten WebSocket und vom Server gesendete Ereignisse allgemein als die am besten geeigneten Technologien zur Realisierung von Echtzeitkommunikation und zur Förderung von Diensten. In Node.js können wir einige Bibliotheken von Drittanbietern verwenden, um WebSocket- und vom Server gesendete Ereignisse zu implementieren.
In Node.js gibt es einige WebSocket-Bibliotheken von Drittanbietern, wie WebSocket-Node, ws, SockJS usw. Diese Bibliotheken bieten alle hochkompatible WebSocket-Protokollimplementierungen, mit denen problemlos eine bidirektionale Kommunikationsverbindung zwischen dem Server und dem Client hergestellt werden kann, wodurch die Effizienz des Echtzeit-Push sichergestellt wird. Das Folgende ist ein Beispielcode, der die ws-Bibliothek zum Implementieren von WebSocket verwendet:
const WebSocket = require('ws'); const wss = new WebSocket.Server({ port: 8080 }); wss.on('connection', function connection(ws) { ws.on('message', function incoming(message) { console.log('received: %s', message); }); ws.send('Hello, you have connected to the server.'); });
In Node.js gibt es einige Server-Sent-Events-Bibliotheken von Drittanbietern, wie z. B. sse, Server- Gesendete Ereignisse, Ereignisquelle warten. Diese Bibliotheken bieten alle eine unidirektionale Kommunikationsimplementierung basierend auf dem HTTP-Protokoll, das Informationen vom Server an den Client übertragen kann. Das Folgende ist ein Beispielcode, der die sse-Bibliothek verwendet, um vom Server gesendete Ereignisse zu implementieren:
const SSE = require('sse'); const http = require('http'); const server = http.createServer(function(req, res) { res.writeHead(200, { 'Content-Type': 'text/event-stream' }); sse.send({ message: 'Hello, you have connected to the server.', }); }); server.listen(8080); const sse = new SSE(server);
Darüber hinaus müssen wir in praktischen Anwendungen häufig Informationen regelmäßig übertragen, z. B. regelmäßig einige Neuigkeiten an den Client senden und bestimmte Benutzerverhalten vorantreiben , usw. Node.js stellt einige Timer-Module bereit, die am häufigsten verwendeten sind setTimeout und setInterval.
setTimeout ist eine globale Funktion, die zum Ausführen einiger Funktionen nach einer bestimmten Zeit verwendet wird. Das Folgende ist ein Beispielcode:
setTimeout(function() { console.log('定时器已经执行完成'); }, 5000);
Der obige Code gibt nach 5 Sekunden die Konsolenmeldung „Timer wurde ausgeführt“ aus.
setInterval ist auch eine globale Funktion, die zum Ausführen einiger Funktionen in einer Schleife verwendet wird. Das Folgende ist ein Beispielcode:
setInterval(function() { console.log('定时器已经执行一次'); }, 5000);
Der obige Code gibt alle 5 Sekunden die Konsolenmeldung „Timer wurde einmal ausgeführt“ aus.
Wie oben zu sehen ist, bietet Node.js einige praktische und schnelle Push-Dienste und Timer-Module für Anwendungen. Mithilfe dieser Module können wir problemlos Echtzeit-Push-Dienste und geplante Push-Dienste implementieren.
Das obige ist der detaillierte Inhalt vonSo pushen Sie regelmäßig NodeJS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!