Module module de base

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:

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

1
WebSocketMessage ws.Message;

Socket

WebSocketobjet, voirWebSocket

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

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


Créez un gestionnaire de protocole websocket, à partir dehttpRecevez la demande de mise à niveau et serrez la main, générezWebSocketobjet

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

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

1
const ws.CONTINUE = 0;

TEXT

Spécifiez le type de message websocket 1, représentant un cadre de texte

1
const ws.TEXT = 1;

BINARY

Spécifiez le type de message websocket 2, représentant 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, représentant une trame ping

1
const ws.PING = 9;

PONG

Spécifiez le type de message websocket 10, représentant un cadre pong

1
const ws.PONG = 10;

CONNECTING

spécifierWebSocketétat, indiquant qu'il se connecte

1
const ws.CONNECTING = 0;

OPEN

spécifierWebSocketétat, indiquant l'état 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écifierWebSocketétat, indiquant qu'il est fermé

1
const ws.CLOSED = 3;