modules
module de prise en charge des sockets Web
WebSocketLe protocole est un protocole de communication full duplex basé sur le protocole TCP.Il é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. En fibjs,WebSocketLe module de support fournit les interfaces API correspondantes à mettre en œuvreWebSocketDé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 require.WebSocketModules 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 la 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 unWebSocketL'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 unWebSocketURL pour terminer la connexion client.SocketLa classe fournit onmessage, onerror, onclose et d'autres fonctions de rappel et fonctions d'envoi, qui peuvent envoyer des données au serveur et recevoir des données envoyées par le serveur.
il faut en être conscient,WebSocketLes modules de support sont simplementWebSocketUne implémentation du protocole qui doit fonctionner au-dessus du protocole HTTP. Côté serveur, la fonction de mise à niveau peut être utilisée pour convertir les requêtes HTTP enWebSocketconnexion, et 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 dehttpRecevoir la demande de mise à niveau et la prise de contact, générerWebSocketobjet
1static Handler ws.upgrade(Function accept);
Paramètres d'appel :
- accept: Fonction, fonction de traitement du succès de la connexion, le rappel transmettra deux paramètres, le premier paramètre est celui reçuWebSocketObjet, le deuxième paramètre est la poignée de mainHttpRequestobjet
Résultats de retour :
- Handler, renvoie le gestionnaire de protocole, peut être utilisé avecHttpServer,Chain,RoutingEn attente d'amarrage```
Créez un gestionnaire de protocole Websocket à partir dehttpRecevoir la demande de mise à niveau et la prise de contact, générerWebSocketobjet
1
2static Handler ws.upgrade(Object opts,
Function accept);
Paramètres d'appel :
- opts: Objet, option de connexion, la valeur par défaut est {}
- accept: Fonction, fonction de traitement du succès de la connexion, le rappel transmettra deux paramètres, le premier paramètre est celui reçuWebSocketObjet, le deuxième paramètre est la poignée de mainHttpRequestobjet
Résultats de retour :
- Handler, renvoie le gestionnaire de protocole, peut être utilisé avecHttpServer,Chain,RoutingEn attente d'amarrage
opts contient des options supplémentaires pour la demande, prises en charge comme suit :
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
Spécifiez le type de message Websocket 0, qui représente un cadre de continuation
1const ws.CONTINUE = 0;
TEXT
Spécifiez le type de message Websocket 1, qui représente un cadre de texte
1const ws.TEXT = 1;
BINARY
Spécifiez le type de message Websocket 2, qui représente 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, qui représente une trame ping
1const ws.PING = 9;
PONG
Spécifiez le type de message Websocket 10, qui représente une trame pong
1const ws.PONG = 10;
CONNECTING
SpécifierWebSocketstatut, indiquant qu'il se connecte
1const ws.CONNECTING = 0;
OPEN
SpécifierWebSocketstatut, indiquant le statut 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écifierWebSocketstatut, indiquant qu'il a été fermé
1const ws.CLOSED = 3;