module ws
module de support websocket
WebSocketLe protocole est un protocole de communication en duplex intégral basé sur le protocole TCP, qui établit une connexion ininterrompue entre le navigateur et le serveur, peut réaliser une transmission de données bidirectionnelle en temps réel et peut prendre en charge la transmission de données dans n'importe quel format. Dans fibjs,WebSocketLe module de support fournit l'interface API correspondante, qui peut réaliserWebSocketDéveloppement côté serveur et côté client.
Instructions:
1var ws = require('ws');
Créez un serveur :
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();
Dans le code ci-dessus, le fibjs intégré est d'abord chargé via la fonction requireWebSocketmodule de support, puis utilisezhttp.ServerLa classe crée une instance de serveur HTTP, spécifie le numéro de port d'écoute et le chemin de requête HTTP, puis utilise la fonction de mise à niveau sous le chemin spécifié pour mettre à niveau la requête versWebSocketconnexion, le serveur crée automatiquement uneWebSocketL'objet fournit des événements onopen, onmessage, onerror, onclose et autres, et peut envoyer des données au client via la fonction d'envoi.
utiliserWebSocketclient:
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);
peut être créé parSocketinstance, et spécifiez uneWebSocketURL pour terminer la connexion client.SocketLa classe fournit onmessage, onerror, onclose et d'autres fonctions de rappel et fonctions d'envoi, qui peuvent réaliser l'envoi de données au serveur et la réception de données envoyées par le serveur.
il faut être conscient de c'est,WebSocketLes modules de support sont justeWebSocketUne implémentation du protocole qui doit fonctionner au-dessus du protocole HTTP. Côté serveur, la requête HTTP peut être convertie enWebSocketconnexion, tandis que du côté client, vous devez passerWebSocketURL du protocole pour spécifier l'adresse du serveur à connecter.
objet
Message
Créez un objet de message websocket, voirWebSocketMessage
1WebSocketMessage ws.Message;
Socket
1WebSocket ws.Socket;
fonction statique
upgrade
Créez un gestionnaire de protocole websocket, à partir dehttpRecevez la demande de mise à niveau et serrez la main, générezWebSocketobjet
1static Handler ws.upgrade(Function accept);
Paramètres d'appel :
- accept: Fonction, la fonction de traitement du succès de la connexion, le rappel passera deux paramètres, le premier paramètre est le reçuWebSocketObjet, le deuxième paramètre est la poignée de mainHttpRequestobjet
résultat de retour :
- Handler, renvoie un gestionnaire de protocole qui peut être utilisé avecHttpServer,Chain,RoutingEn attente d'amarrage```
Créez un gestionnaire de protocole websocket, à partir dehttpRecevez la demande de mise à niveau et serrez la main, générezWebSocketobjet
1
2static Handler ws.upgrade(Object opts,
Function accept);
Paramètres d'appel :
- opts: Objet, options de connexion, la valeur par défaut est {}
- accept: Fonction, la fonction de traitement du succès de la connexion, le rappel passera deux paramètres, le premier paramètre est le reçuWebSocketObjet, le deuxième paramètre est la poignée de mainHttpRequestobjet
résultat de retour :
- Handler, renvoie un gestionnaire de protocole qui peut être utilisé avecHttpServer,Chain,RoutingEn attente d'amarrage
opts contient des options supplémentaires pour la requête, le contenu pris en charge est le suivant :
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
}
constant
CONTINUE
Spécifiez le type de message websocket 0, représentant un cadre de continuation
1const ws.CONTINUE = 0;
TEXT
Spécifiez le type de message websocket 1, représentant un cadre de texte
1const ws.TEXT = 1;
BINARY
Spécifiez le type de message websocket 2, représentant une trame binaire
1const ws.BINARY = 2;
CLOSE
Spécifiez le type de message websocket 8, la connexion est fermée
1const ws.CLOSE = 8;
PING
Spécifiez le type de message websocket 9, représentant une trame ping
1const ws.PING = 9;
PONG
Spécifiez le type de message websocket 10, représentant un cadre pong
1const ws.PONG = 10;
CONNECTING
spécifierWebSocketétat, indiquant qu'il se connecte
1const ws.CONNECTING = 0;
OPEN
spécifierWebSocketétat, indiquant l'état ouvert
1const ws.OPEN = 1;
CLOSING
spécifierWebSocketÉtat, indiquant que le message CLOSE a été envoyé et attend d'être fermé
1const ws.CLOSING = 2;
CLOSED
spécifierWebSocketétat, indiquant qu'il est fermé
1const ws.CLOSED = 3;