modulews
WebSocket-Unterstützungsmodul
WebSocketDas Protokoll ist ein Vollduplex-Kommunikationsprotokoll, das auf dem TCP-Protokoll basiert. Es stellt eine unterbrechungsfreie Verbindung zwischen dem Browser und dem Server her, kann eine bidirektionale Datenübertragung in Echtzeit realisieren und die Datenübertragung in jedem Format unterstützen. In fibjs,WebSocketDas Support-Modul stellt entsprechende API-Schnittstellen zur Implementierung bereitWebSocketServerseitige 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 werden die integrierten fibjs zunächst über die Funktion require geladen.WebSocketSupport-Module, dann verwendenhttp.ServerDie Klasse erstellt eine HTTP-Serverinstanz, gibt die Nummer des Überwachungsports 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 die Ereignisse onopen, onmessage, onerror, onclose und andere 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 vonSocketInstanz und geben Sie a anWebSocketURL zum Herstellen der Clientverbindung.SocketDie Klasse bietet Onmessage-, Onerror-, Onclose- und andere Rückruffunktionen sowie Sendefunktionen, mit denen Daten an den Server gesendet und vom Server gesendete Daten empfangen werden können.
muss sich darüber im Klaren sein,WebSocketSupport-Module sind einfachWebSocketEine Implementierung des Protokolls, die auf dem HTTP-Protokoll aufbauen muss. Auf der Serverseite kann die Upgrade-Funktion genutzt werden, um HTTP-Anfragen in umzuwandelnWebSocketVerbindung, und auf der Clientseite müssen Sie bestehenWebSocketProtokoll-URL zur Angabe der Serveradresse, mit der 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-Protokollhandler aushttpUpgrade-Anfrage und Handshake erhalten, generierenWebSocketObjekt
1static Handler ws.upgrade(Function accept);
Aufrufparameter:
- accept: Funktion, Verbindungserfolgsverarbeitungsfunktion, der Rückruf übergibt zwei Parameter, der erste Parameter ist der empfangeneWebSocketObjekt, der zweite Parameter ist der HandshakeHttpRequestObjekt
Rückgabeergebnisse:
- Handler, gibt den Protokollhandler zurück, kann mit verwendet werdenHttpServer,Chain,RoutingWarten auf das Andocken
Erstellen Sie einen WebSocket-Protokollhandler aushttpUpgrade-Anfrage und Handshake erhalten, generierenWebSocketObjekt
1
2static Handler ws.upgrade(Object opts,
Function accept);
Aufrufparameter:
- opts: Objekt, Verbindungsoption, Standard ist {}
- accept: Funktion, Verbindungserfolgsverarbeitungsfunktion, der Rückruf übergibt zwei Parameter, der erste Parameter ist der empfangeneWebSocketObjekt, der zweite Parameter ist der HandshakeHttpRequestObjekt
Rückgabeergebnisse:
- Handler, gibt den Protokollhandler zurück, kann mit verwendet werdenHttpServer,Chain,RoutingWarten auf das Andocken
opts enthält zusätzliche Optionen für die Anfrage, die wie folgt unterstützt werden:
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 WebSocket-Nachrichtentyp 2 an, der einen binären Frame 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
AngebenWebSocketStatus, der den offenen Status anzeigt
1const ws.OPEN = 1;
CLOSING
AngebenWebSocketStatus, der anzeigt, dass die CLOSE-Nachricht gesendet wurde und darauf wartet, geschlossen zu werden.
1const ws.CLOSING = 2;
CLOSED
AngebenWebSocketStatus, der anzeigt, dass es geschlossen wurde
1const ws.CLOSED = 3;