Module de base

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:

1
var ws = require('ws');

Créez un serveur :

1 2 3 4 5 6 7 8 9
var 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 4
var 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

1
WebSocketMessage ws.Message;

Socket

WebSocketobjet, voirWebSocket

1
WebSocket 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

1
static 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 :


Créez un gestionnaire de protocole Websocket à partir dehttpRecevoir la demande de mise à niveau et la prise de contact, générerWebSocketobjet

1 2
static 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 :

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

1
const ws.CONTINUE = 0;

TEXT

Spécifiez le type de message Websocket 1, qui représente un cadre de texte

1
const ws.TEXT = 1;

BINARY

Spécifiez le type de message Websocket 2, qui représente une trame binaire

1
const ws.BINARY = 2;

CLOSE

Spécifiez le type de message Websocket 8, la connexion est fermée

1
const ws.CLOSE = 8;

PING

Spécifiez le type de message Websocket 9, qui représente une trame ping

1
const ws.PING = 9;

PONG

Spécifiez le type de message Websocket 10, qui représente une trame pong

1
const ws.PONG = 10;

CONNECTING

SpécifierWebSocketstatut, indiquant qu'il se connecte

1
const ws.CONNECTING = 0;

OPEN

SpécifierWebSocketstatut, indiquant le statut ouvert

1
const ws.OPEN = 1;

CLOSING

SpécifierWebSocketétat, indiquant que le message CLOSE a été envoyé et attend d'être fermé.

1
const ws.CLOSING = 2;

CLOSED

SpécifierWebSocketstatut, indiquant qu'il a été fermé

1
const ws.CLOSED = 3;