módulos
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 una 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 las interfaces API correspondientes para implementarWebSocketDesarrollo del lado del servidor y del lado del cliente.
Instrucciones:
1var ws = require('ws');
Crea 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, el fibjs integrado se carga primero a través de la función require.WebSocketMódulos 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 especificar unaWebSocketURL 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 enviar datos al servidor y recibir datos enviados por el servidor.
hay que tener en cuenta es,WebSocketLos módulos de soporte son simplementeWebSocketUna implementación del protocolo que debe funcionar sobre el protocolo HTTP. En el lado del servidor, la función de actualización se puede utilizar para convertir solicitudes HTTP enWebSocketconexión, y en el lado del cliente, debe pasarWebSocketURL del protocolo para especificar la dirección del servidor al que se conectará.
objeto
Message
Cree un objeto de mensaje websocket, consulteWebSocketMessage
1WebSocketMessage ws.Message;
Socket
1WebSocket ws.Socket;
función estática
upgrade
Cree un controlador de protocolo websocket desdehttpRecibir solicitud de actualización y protocolo de enlace, generarWebSocketobjeto
1static Handler ws.upgrade(Function accept);
Parámetros de llamada:
- accept: Función, 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
Resultados de devolución:
- Handler, devuelve el controlador de protocolo, se puede utilizar conHttpServer,Chain,RoutingEsperando atraque```
Cree un controlador de protocolo websocket desdehttpRecibir solicitud de actualización y protocolo de enlace, generarWebSocketobjeto
1
2static Handler ws.upgrade(Object opts,
Function accept);
Parámetros de llamada:
- opts: Objeto, opción de conexión, el valor predeterminado es {}
- accept: Función, 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
Resultados de devolución:
- Handler, devuelve el controlador de protocolo, se puede utilizar conHttpServer,Chain,RoutingEsperando atracar
opts contiene opciones adicionales para la solicitud, respaldadas de la siguiente manera:
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 0 de websocket, que representa un marco de continuación.
1const ws.CONTINUE = 0;
TEXT
Especifique el tipo de mensaje 1 de websocket, que representa un marco de texto
1const ws.TEXT = 1;
BINARY
Especifique el tipo de mensaje 2 de websocket, que representa un marco binario
1const ws.BINARY = 2;
CLOSE
Especifique el tipo de mensaje 8 de websocket, la conexión está cerrada
1const ws.CLOSE = 8;
PING
Especifique el tipo de mensaje 9 de websocket, que representa un marco de ping
1const ws.PING = 9;
PONG
Especifique el tipo de mensaje 10 de websocket, que representa un marco pong
1const ws.PONG = 10;
CONNECTING
EspecificarWebSocketestado, indicando que se está conectando
1const ws.CONNECTING = 0;
OPEN
EspecificarWebSocketestado, indicando estado abierto
1const ws.OPEN = 1;
CLOSING
EspecificarWebSocketestado, indicando que el mensaje CLOSE ha sido enviado y está esperando ser cerrado.
1const ws.CLOSING = 2;
CLOSED
EspecificarWebSocketestado, indicando que ha sido cerrado
1const ws.CLOSED = 3;