Heim  >  Artikel  >  Web-Frontend  >  Muss socketio im Knoten verwendet werden?

Muss socketio im Knoten verwendet werden?

WBOY
WBOYOriginal
2022-07-06 17:19:381424Durchsuche

Socketio muss in Node verwendet werden. Socketio ist eine NodeJS-Funktion, um einige Funktionen zu kapseln, und kann daher nur in NodeJS verwendet werden. Die zwischen den beiden etablierte bidirektionale Kommunikationsdatenaustauschtechnologie verwendet unten EngineIO.

Muss socketio im Knoten verwendet werden?

Die Betriebsumgebung dieses Artikels: Windows 10-System, NodeJS Version 16, Dell G3-Computer.

socketio muss in nodejs verwendet werden.

socketio ist eine Bibliothek von nodejs. Sie entspricht der Verwendung anderer nodejs-Funktionen, um einige Funktionen für Sie zu kapseln. Sie hängt von einigen APIs von nodejs ab und kann daher nur unter nodejs verwendet werden .

SocketIO ist eine bidirektionale Kommunikationsdatenaustauschtechnologie, die zwischen dem Client und dem Server eingerichtet wird. Die zugrunde liegende Schicht verwendet EngineIO. Der Client von SocketIO verwendet Engine.IO-Client und der Server verwendet Engine.IO.

Erweiterte Kenntnisse

So funktioniert SocketIO

Wenn ein Browser versucht, SocketIO einzurichten, verwendet SocketIO zunächst xhr-polling, um eine lange Umfrage zu erstellen. Sobald die lange Abfrage eingerichtet ist, wird sie auf eine WebSocket-Verbindung aktualisiert.

Die unterste Ebene von SocketIO wird mithilfe der EngineIO-Bibliothek implementiert. Diese Bibliothek verwendet WebSocket und XMLHttprequest, um ihr eigenes Socket-Protokoll (vorübergehend EIO Socket genannt) zu kapseln. Ein vollständiger EIO-Socket umfasst mehrere XHR- und WebSocket-Verbindungen

Client

EIO-Socket übergibt einen XHR-Handshake (XMLHttprequest). Das Frontend sendet ein XHR, um dem Server mitzuteilen, dass ich mit der XHR-Langabfrage beginnen möchte. Zu den vom Backend zurückgegebenen Daten gehören ein Open-Flag (dargestellt durch die Zahl 0) sowie Sid- und Upgrades-Felder, Ping-Intervall und Ping-Timeout.

0{
“sid”: “8b7ab1ae-fbcf-4d23-8192-3c14a2a90721”,
“upgrades”: [
“websocket”
],
“pingInterval”: 10000,
“pingTimeout”: 60000
}

sid ist die Sitzungs-ID dieses EIO-Sockets. Da ein EIO-Socket mehrere Anforderungen enthält und das Backend gleichzeitig eine Verbindung zu mehreren EIO-Sockets herstellt, entspricht die Sid der SESSION-ID.

Ein weiteres Feld-Upgrade, normalerweise [‘websocket’], gibt an, dass die Verbindungsmethode von Long Polling auf WebSocket aktualisiert werden kann.

Das Frontend startet die XHR-Langabfrage beim Senden des ersten Das sogenannte Long Polling bedeutet, dass das Frontend eine Anfrage sendet und der Server wartet, bis Daten zurückgegeben werden, bevor er antwortet. Das Frontend sendet sofort die nächste Anfrage, nachdem er die Antwort erhalten hat. Dies ermöglicht eine bidirektionale Kommunikation.

Nachdem das Frontend die Handshake-Upgrades erhalten hat, erkennt EIO, ob der Browser WebSocket unterstützt. Wenn dies der Fall ist, startet es eine WebSocket-Verbindung und sendet dann ein Datenelement mit dem Inhalt der Sonde und dem Ping-Typ an den Server über diesen WebSocket. Wenn der Server zu diesem Zeitpunkt Daten mit dem Sondeninhalt und dem Pong-Typ zurückgibt, stoppt das Front-End die zuvor eingerichtete HTTP-Langzeitabfrage und verwendet nur den WebSocket-Kanal zum Senden und Empfangen von Daten. Während des EIO-Socket-Lebenszyklus. Es wird eine Zeit lang gepingt, um zu testen, ob das Netzwerk normal ist.

Muss socketio im Knoten verwendet werden?Dies ist die Struktur des WebSocket-Frames, Grün sendet und Weiß empfängt. Die vorherige Zahl ist der Pakettyp, 2 ist Ping, 3 ist Pong, 42 ist Nachricht

Empfohlenes Lernen: „

nodejs Video-Tutorial

Das obige ist der detaillierte Inhalt vonMuss socketio im Knoten verwendet werden?. 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