Socketio muss in Node verwendet werden. Es verwendet NodeJS-Funktionen, um einige Funktionen zu kapseln, und kann daher nur in NodeJS verwendet werden -Wege-Kommunikationsdatenaustauschtechnologie unter Verwendung von EngineIO auf der untersten Ebene.
Die Betriebsumgebung dieses Artikels: Windows 10-System, NodeJS Version 16, Dell G3-Computer.
Socketio ist eine Bibliothek von NodeJS. Sie entspricht anderen, die NodeJS-Funktionen verwenden, um einige Funktionen für Sie zu kapseln. Sie hängt von einigen NodeJS-APIs ab und kann daher nur unter NodeJS verwendet werden.
SocketIO ist eine bidirektionale Kommunikationsdatenaustauschtechnologie, die zwischen dem Client und dem Server eingerichtet wird und EngineIO unten verwendet. Der Client von SocketIO verwendet Engine.IO-Client und der Server verwendet Engine.IO.
Wissen erweitern
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, die ihr eigenes Socket-Protokoll (vorübergehend EIO Socket genannt) mithilfe von WebSocket und XMLHttprequest kapselt. Ein vollständiger EIO-Socket umfasst mehrere XHR- und WebSocket-Verbindungen.
Kunde
EIO-Sockets bestehen einen XHR-Handshake (XMLHttprequest). Das Frontend sendet ein XHR, um dem Server mitzuteilen, dass ich eine lange XHR-Abfrage starten 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, normalerweise ['websocket'], gibt an, dass die Verbindungsmethode von Long Polling auf WebSocket aktualisiert werden kann.
Das Front-End startet den XHR-Long-Polling beim Senden des ersten XHR. Wenn zu diesem Zeitpunkt ein Bedarf zum Senden und Empfangen von Daten besteht, wird dies durch Long-Polling implementiert. 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 Front-End die Handshake-Upgrades erhalten hat, erkennt EIO, ob der Browser WebSocket unterstützt. Wenn dies der Fall ist, initiiert es eine WebSocket-Verbindung und sendet dann über diese ein Datenelement mit dem Inhalt der Sonde und dem Ping-Typ an den Server WebSocket. Wenn der Server zu diesem Zeitpunkt Daten mit dem Inhalt von Probe und dem Pong-Typ zurückgibt, stoppt das Front-End die zuvor eingerichtete HTTP-Langabfrage und verwendet nur den WebSocket-Kanal zum Senden und Empfangen von Daten.
Während des EIO-Socket-Lebenszyklus wird von Zeit zu Zeit ein Ping-Pong durchgeführt, um zu testen, ob das Netzwerk normal ist.
Dies ist die Struktur des WebSocket-Frames: Grün sendet und Weiß empfängt. Die vorherige Zahl ist der Datenpakettyp, 2 ist Ping, 3 ist Pong, 42 ist Nachricht
Empfohlenes Lernen: „nodejs-Video-Tutorial“
Oben finden Sie die Details dazu, ob socketio im Knoten verwendet werden muss. Weitere Informationen finden Sie in anderen verwandten Artikeln auf dieser Website!