So pushen Sie regelmäßig NodeJS

PHPz
Freigeben: 2023-04-26 10:02:12
Original
795 Leute haben es durchsucht

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:

  1. Polling

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.

  1. Comet

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.

  1. WebSocket

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.

  1. Server-Sent Events

Ä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.

  1. WebSocket-Bibliothek

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.');
});
Nach dem Login kopieren
  1. Server-Sent Events-Bibliothek

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);
Nach dem Login kopieren

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.

  1. setTimeout

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);
Nach dem Login kopieren

Der obige Code gibt nach 5 Sekunden die Konsolenmeldung „Timer wurde ausgeführt“ aus.

  1. setInterval

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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!