Modul ws
Websocket-Unterstützungsmodul
WebSocketDas Protokoll ist ein auf dem TCP-Protokoll basierendes Vollduplex-Kommunikationsprotokoll, das eine ununterbrochene Verbindung zwischen dem Browser und dem Server herstellt, eine Zwei-Wege-Datenübertragung in Echtzeit realisieren kann und die Datenübertragung in jedem Format unterstützen kann. In fibjs,WebSocketDas Unterstützungsmodul stellt die entsprechende API-Schnittstelle bereit, die realisiert werden kannWebSocketServerseitige und clientseitige Entwicklung.
Anweisungen:
1var ws = require('ws');
Erstellen Sie einen Server:
1
2
3
4
5
6
7
8
9var ws = require('ws');
var http = require('http');
var svr = new http.Server(80, {
'/ws': ws.upgrade((conn, req) => {
conn.onmessage = e => console.log(e.data);
})
});
svr.start();
Im obigen Code wird das eingebaute fibjs zuerst durch die require-Funktion geladenWebSocketSupport-Modul, dann verwendenhttp.ServerDie Klasse erstellt eine HTTP-Serverinstanz, gibt die Überwachungsportnummer und den HTTP-Anforderungspfad an und verwendet dann die Upgrade-Funktion unter dem angegebenen Pfad, um die Anforderung zu aktualisierenWebSocketVerbindung erstellt der Server automatisch eineWebSocketDas Objekt stellt onopen, onmessage, onerror, onclose und andere Ereignisse bereit und kann über die Sendefunktion Daten an den Client senden.
verwendenWebSocketKlient:
1
2
3
4var ws = require('ws');
var conn = new ws.Socket('ws://127.0.0.1/ws');
conn.onmessage = e => console.log(e.data);
kann erstellt werden durchSocketBeispiel, und geben Sie a anWebSocketURL zum Abschließen der Clientverbindung.SocketDie Klasse stellt onmessage, onerror, onclose und andere Callback-Funktionen und Sendefunktionen bereit, die das Senden von Daten an den Server und das Empfangen von vom Server gesendeten Daten realisieren können.
bewusst sein müssen,WebSocketSupport-Module sind nurWebSocketEine Implementierung des Protokolls, die auf dem HTTP-Protokoll aufbauen muss. Auf der Serverseite kann die HTTP-Anfrage umgewandelt werdenWebSocketVerbindung, während Sie auf der Clientseite passieren müssenWebSocketProtokoll-URL zur Angabe der Adresse des Servers, zu dem eine Verbindung hergestellt werden soll.
Objekt
Message
Erstellen Sie ein Websocket-Nachrichtenobjekt, sieheWebSocketMessage
1WebSocketMessage ws.Message;
Socket
WebSocketObjekt, sieheWebSocket
1WebSocket ws.Socket;
statische Funktion
upgrade
Erstellen Sie einen Websocket-Protokoll-Handler, fromhttpUpgrade-Anfrage erhalten und Hände schütteln, generierenWebSocketObjekt
1static Handler ws.upgrade(Function accept);
Aufrufparameter:
- accept: Funktion, die Verbindungserfolgsverarbeitungsfunktion, der Rückruf wird zwei Parameter übergeben, der erste Parameter ist der empfangeneWebSocketObject, der zweite Parameter ist der HandshakeHttpRequestObjekt
Rückgabeergebnis:
- Handler, gibt einen Protokollhandler zurück, der mit verwendet werden kannHttpServer,Chain,RoutingWarten auf Andocken```
Erstellen Sie einen Websocket-Protokoll-Handler, fromhttpUpgrade-Anfrage erhalten und Hände schütteln, generierenWebSocketObjekt
1
2static Handler ws.upgrade(Object opts,
Function accept);
Aufrufparameter:
- opts: Objekt, Verbindungsoptionen, Standard ist {}
- accept: Funktion, die Verbindungserfolgsverarbeitungsfunktion, der Rückruf wird zwei Parameter übergeben, der erste Parameter ist der empfangeneWebSocketObject, der zweite Parameter ist der HandshakeHttpRequestObjekt
Rückgabeergebnis:
- Handler, gibt einen Protokollhandler zurück, der mit verwendet werden kannHttpServer,Chain,RoutingWarten auf das Andocken
opts enthält zusätzliche Optionen für die Anfrage, der unterstützte Inhalt ist wie folgt:
1
2
3
4{
"perMessageDeflate": false, // specify whether to use permessage-deflate, default is true
"maxPayload": 67108864 // specify the maximum allowed message size, default is 64MB
}
Konstante
CONTINUE
Geben Sie den Websocket-Nachrichtentyp 0 an, der einen Fortsetzungsrahmen darstellt
1const ws.CONTINUE = 0;
TEXT
Geben Sie den Websocket-Nachrichtentyp 1 an, der einen Textrahmen darstellt
1const ws.TEXT = 1;
BINARY
Geben Sie den Websocket-Nachrichtentyp 2 an, der einen Binärrahmen darstellt
1const ws.BINARY = 2;
CLOSE
Geben Sie den Websocket-Nachrichtentyp 8 an, die Verbindung wird geschlossen
1const ws.CLOSE = 8;
PING
Geben Sie den Websocket-Nachrichtentyp 9 an, der einen Ping-Frame darstellt
1const ws.PING = 9;
PONG
Geben Sie den Websocket-Nachrichtentyp 10 an, der einen Pong-Frame darstellt
1const ws.PONG = 10;
CONNECTING
angebenWebSocketStatus, der anzeigt, dass eine Verbindung hergestellt wird
1const ws.CONNECTING = 0;
OPEN
angebenWebSocketZustand, der den offenen Zustand anzeigt
1const ws.OPEN = 1;
CLOSING
angebenWebSocketStatus, der angibt, dass die CLOSE-Nachricht gesendet wurde und darauf wartet, geschlossen zu werden
1const ws.CLOSING = 2;
CLOSED
angebenWebSocketStatus, der anzeigt, dass es geschlossen ist
1const ws.CLOSED = 3;