modules
websocket-ondersteuningsmodule
WebSocketHet protocol is een full-duplex communicatieprotocol gebaseerd op het TCP-protocol, dat een ononderbroken verbinding tot stand brengt tussen de browser en de server, real-time tweerichtingsdatatransmissie kan realiseren en datatransmissie in elk formaat ondersteunt. In fibjs,WebSocketDe ondersteuningsmodule biedt overeenkomstige API-interfaces om te implementerenWebSocketOntwikkeling aan de serverzijde en aan de clientzijde.
Instructies:
1var ws = require('ws');
Maak een server aan:
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();
In de bovenstaande code wordt de ingebouwde fibjs eerst geladen via de require-functie.WebSocketOndersteun modules en gebruik vervolgenshttp.ServerDe klasse maakt een HTTP-serverinstantie aan, specificeert het luisterpoortnummer en het HTTP-verzoekpad en gebruikt vervolgens de upgradefunctie onder het opgegeven pad om het verzoek te upgraden naarWebSocketverbinding maakt de server automatisch eenWebSocketHet object biedt onopen, onmessage, onerror, onclose en andere gebeurtenissen, en kan via de verzendfunctie gegevens naar de client sturen.
gebruikWebSocketCliënt:
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);
Kan worden aangemaakt doorSocketinstantie en specificeer aWebSocketURL om de clientverbinding te voltooien.SocketDe klasse biedt onmessage, onerror, onclose en andere callback-functies en send-functies, die gegevens naar de server kunnen verzenden en gegevens kunnen ontvangen die door de server zijn verzonden.
moet er rekening mee houden,WebSocketOndersteuningsmodules zijn eenvoudigWebSocketEen implementatie van het protocol dat bovenop het HTTP-protocol moet werken. Aan de serverzijde kan de upgradefunctie worden gebruikt om HTTP-verzoeken om te zetten inWebSocketverbinding, en aan de clientzijde moet u slagenWebSocketProtocol-URL om het serveradres op te geven waarmee verbinding moet worden gemaakt.
voorwerp
Message
Maak een websocket-berichtobject, zieWebSocketMessage
1WebSocketMessage ws.Message;
Socket
WebSocketvoorwerp, zieWebSocket
1WebSocket ws.Socket;
statische functie
upgrade
Maak een websocket-protocolhandler vanhttpOntvang een upgradeverzoek en handshake, genereerWebSocketvoorwerp
1static Handler ws.upgrade(Function accept);
Oproepparameters:
- accept: Functie, verwerkingsfunctie voor verbindingssucces, de callback geeft twee parameters door, de eerste parameter is de ontvangenWebSocketObject, de tweede parameter is de handdrukHttpRequestvoorwerp
Resultaten retourneren:
- Handler, retourneert de protocolhandler, kan worden gebruikt metHttpServer,Chain,RoutingWachten op docking```
Maak een websocket-protocolhandler vanhttpOntvang een upgradeverzoek en handshake, genereerWebSocketvoorwerp
1
2static Handler ws.upgrade(Object opts,
Function accept);
Oproepparameters:
- opts: Object, verbindingsoptie, standaard is {}
- accept: Functie, verwerkingsfunctie voor verbindingssucces, de callback geeft twee parameters door, de eerste parameter is de ontvangenWebSocketObject, de tweede parameter is de handdrukHttpRequestvoorwerp
Resultaten retourneren:
- Handler, retourneert de protocolhandler, kan worden gebruikt metHttpServer,Chain,RoutingWachten op docking
opts bevat extra opties voor het verzoek, die als volgt worden ondersteund:
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
}
constante
CONTINUE
Geef websocket-berichttype 0 op, wat een vervolgframe vertegenwoordigt
1const ws.CONTINUE = 0;
TEXT
Geef websocketberichttype 1 op, dat een tekstframe vertegenwoordigt
1const ws.TEXT = 1;
BINARY
Geef websocketberichttype 2 op, dat een binair frame vertegenwoordigt
1const ws.BINARY = 2;
CLOSE
Geef websocketberichttype 8 op, de verbinding is gesloten
1const ws.CLOSE = 8;
PING
Geef websocketberichttype 9 op, dat een pingframe vertegenwoordigt
1const ws.PING = 9;
PONG
Geef websocket-berichttype 10 op, dat een pong-frame vertegenwoordigt
1const ws.PONG = 10;
CONNECTING
SpecificeerWebSocketstatus, wat aangeeft dat er verbinding wordt gemaakt
1const ws.CONNECTING = 0;
OPEN
SpecificeerWebSocketstatus, wat de open status aangeeft
1const ws.OPEN = 1;
CLOSING
SpecificeerWebSocketstatus, wat aangeeft dat het CLOSE-bericht is verzonden en wacht om te worden gesloten.
1const ws.CLOSING = 2;
CLOSED
SpecificeerWebSocketstatus, wat aangeeft dat deze is gesloten
1const ws.CLOSED = 3;