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:
1var ws = require('ws');
Crear un servidor:
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();
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
4var 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
1WebSocketMessage ws.Message;
Socket
1WebSocket ws.Socket;
función estática
upgrade
Cree un controlador de protocolo websocket, desdehttpReciba una solicitud de actualización y estreche la mano, genereWebSocketobjeto
1static 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:
- Handler, devuelve un controlador de protocolo que se puede utilizar conHttpServer,Chain,RoutingEsperando acoplamiento```
Cree un controlador de protocolo websocket, desdehttpReciba una solicitud de actualización y estreche la mano, genereWebSocketobjeto
1
2static 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:
- Handler, devuelve un controlador de protocolo que se puede utilizar conHttpServer,Chain,RoutingEsperando el acoplamiento
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
1const ws.CONTINUE = 0;
TEXT
Especifique el tipo de mensaje de websocket 1, que representa un marco de texto
1const ws.TEXT = 1;
BINARY
Especifique el tipo de mensaje de websocket 2, que representa un marco binario
1const ws.BINARY = 2;
CLOSE
Especifique el tipo de mensaje websocket 8, la conexión está cerrada
1const ws.CLOSE = 8;
PING
Especifique el tipo de mensaje de websocket 9, que representa un marco de ping
1const ws.PING = 9;
PONG
Especifique el tipo de mensaje websocket 10, que representa un marco pong
1const ws.PONG = 10;
CONNECTING
especificarWebSocketestado, lo que indica que se está conectando
1const ws.CONNECTING = 0;
OPEN
especificarWebSocketestado, que indica el estado abierto
1const ws.OPEN = 1;
CLOSING
especificarWebSocketEstado, que indica que se ha enviado el mensaje CIERRE y está a la espera de ser cerrado
1const ws.CLOSING = 2;
CLOSED
especificarWebSocketestado, indicando que está cerrado
1const ws.CLOSED = 3;