Módulo módulo básico

módulo ws

módulo de soporte websocket

WebSocketEl protocolo es un protocolo de comunicación full-duplex basado en el protocolo TCP, que establece una conexión ininterrumpida entre el navegador y el servidor, puede realizar la transmisión de datos bidireccional en tiempo real y puede admitir la transmisión de datos en cualquier formato. en fibjs,WebSocketEl módulo de soporte proporciona la interfaz API correspondiente, que puede realizarWebSocketDesarrollo del lado del servidor y del lado del cliente.

Instrucciones:

1
var ws = require('ws');

Crear un servidor:

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();

En el código anterior, los fibjs incorporados se cargan primero a través de la función requireWebSocketmódulo de soporte, luego usehttp.ServerLa clase crea una instancia de servidor HTTP, especifica el número de puerto de escucha y la ruta de solicitud HTTP, y luego usa la función de actualización en la ruta especificada para actualizar la solicitud aWebSocketconexión, el servidor crea automáticamente unaWebSocketEl objeto proporciona onopen, onmessage, onerror, onclose y otros eventos, y puede enviar datos al cliente a través de la función de envío.

usarWebSocketcliente:

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

puede ser creado porSocketinstancia, y especifique unWebSocketURL para completar la conexión del cliente.SocketLa clase proporciona onmessage, onerror, onclose y otras funciones de devolución de llamada y funciones de envío, que pueden realizar el envío de datos al servidor y la recepción de datos enviados por el servidor.

hay que tener en cuenta es,WebSocketLos módulos de soporte son soloWebSocketUna implementación del protocolo que necesita funcionar sobre el protocolo HTTP. En el lado del servidor, la solicitud HTTP se puede convertir aWebSocketconexión, mientras que en el lado del cliente, debe pasarWebSocketProtocolo URL para especificar la dirección del servidor al que se conectará.

objeto

Message

Cree un objeto de mensaje websocket, veaWebSocketMessage

1
WebSocketMessage ws.Message;

Socket

WebSocketobjeto, verWebSocket

1
WebSocket ws.Socket;

función estática

upgrade

Cree un controlador de protocolo websocket, desdehttpReciba una solicitud de actualización y estreche la mano, genereWebSocketobjeto

1
static Handler ws.upgrade(Function accept);

Parámetros de llamada:

  • accept: Función, la función de procesamiento de conexión exitosa, la devolución de llamada pasará dos parámetros, el primer parámetro es el recibidoWebSocketObjeto, el segundo parámetro es el apretón de manos.HttpRequestobjeto

resultado devuelto:


Cree un controlador de protocolo websocket, desdehttpReciba una solicitud de actualización y estreche la mano, genereWebSocketobjeto

1 2
static Handler ws.upgrade(Object opts, Function accept);

Parámetros de llamada:

  • opts: Objeto, opciones de conexión, el valor predeterminado es {}
  • accept: Función, la función de procesamiento de conexión exitosa, la devolución de llamada pasará dos parámetros, el primer parámetro es el recibidoWebSocketObjeto, el segundo parámetro es el apretón de manos.HttpRequestobjeto

resultado devuelto:

opts contiene opciones adicionales para la solicitud, el contenido admitido es el siguiente:

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

Especifique el tipo de mensaje de websocket 0, que representa un marco de continuación

1
const ws.CONTINUE = 0;

TEXT

Especifique el tipo de mensaje de websocket 1, que representa un marco de texto

1
const ws.TEXT = 1;

BINARY

Especifique el tipo de mensaje de websocket 2, que representa un marco binario

1
const ws.BINARY = 2;

CLOSE

Especifique el tipo de mensaje websocket 8, la conexión está cerrada

1
const ws.CLOSE = 8;

PING

Especifique el tipo de mensaje de websocket 9, que representa un marco de ping

1
const ws.PING = 9;

PONG

Especifique el tipo de mensaje websocket 10, que representa un marco pong

1
const ws.PONG = 10;

CONNECTING

especificarWebSocketestado, lo que indica que se está conectando

1
const ws.CONNECTING = 0;

OPEN

especificarWebSocketestado, que indica el estado abierto

1
const ws.OPEN = 1;

CLOSING

especificarWebSocketEstado, que indica que se ha enviado el mensaje CIERRE y está a la espera de ser cerrado

1
const ws.CLOSING = 2;

CLOSED

especificarWebSocketestado, indicando que está cerrado

1
const ws.CLOSED = 3;