ObjetoWebSocketMensaje
WebSocketMessage
SíWebSocketUn tipo de mensaje en un protocolo que encapsulaWebSocketEl formato de datos y los métodos de procesamiento de varios mensajes en el protocolo de transmisión se pueden utilizar paraWebSocketEl cliente y el servidor se comunican.
El constructor de la clase WebSocketMessage
admite un parámetro de tipo de mensaje específico type
, que tiene tres valores opcionales:
ws.TEXT
: Representa un mensaje de tipo texto, el contenido es una cadena.ws.BINARY
: Representa un mensaje de tipo binario, el contenido son datos binarios.
Además, también puede WebSocketMessage.masked
especificar si es necesario aplicar una máscara modificando el atributo y WebSocketMessage.compress
si se requiere compresión utilizando el atributo.
El siguiente código es un ejemplo de un servidor websocket. Cuando un cliente se conecta, el servidor devolverá el mensaje recibido al cliente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18var ws = require('ws');
var http = require('http');
var svr = new http.Server(8080, {
'/websocket': ws.upgrade((conn, req) => {
// emit message event
conn.onmessage = e => {
if (e.data.type == ws.TEXT) {
console.log(`接收到客户端发来的消息 ${e.data}`);
conn.send(e.data);
} else {
console.error(`收到未知类型消息 ${e.data.type}`);
}
}
conn.onclose = e => console.log('离开了一个客户端');
})
});
svr.start();
En este programa, el módulo de soporte websocket y el integradohttpmódulo y luego creadohttpobjeto de servicio y especifique la ruta de solicitud que se procesará, llamandows.upgradeLa función actualiza la solicitud de la ruta correspondiente a una conexión websocket. Después de crear una conexión websocket, el servidor creará automáticamente unaws.SocketObjeto y proporciona API onopen, onmessage, onclose y otras para manejar cuando un cliente se conecta, recibe un mensaje y cierra eventos. Al recibir un mensaje, el servidor determinará el tipo de mensaje. Si es de tipo texto, devolverá el mensaje recibido. Lo anterior es un flujo de procesamiento de servidor websocket simple, que se puede modificar según las necesidades reales.
relación de herencia
Constructor
WebSocketMessage
Constructor de objetos de mensaje de manejo de paquetes
1
2
3
4new WebSocketMessage(Integer type = ws.BINARY,
Boolean masked = true,
Boolean compress = false,
Integer maxSize = 67108864);
Parámetros de llamada:
- type: Entero, tipo de mensaje websocket, el valor predeterminado es websocket.BINARY
- masked: booleano, máscara de mensaje websocket, el valor predeterminado es verdadero
- compress: Booleano, marca si el mensaje está comprimido, el valor predeterminado es falso
- maxSize: Entero, tamaño máximo de paquete en MB, el valor predeterminado es 67108864 (64M)
constante
TEXT
Especifique el tipo de mensaje 1, que representa un tipo de texto.
1const WebSocketMessage.TEXT = 1;
BINARY
Especifique el tipo de mensaje 2, que representa un tipo binario.
1const WebSocketMessage.BINARY = 2;
propiedades de miembros
masked
Booleano, consulta y lee el indicador de máscara de websocket, el valor predeterminado es verdadero
1Boolean WebSocketMessage.masked;
compress
Booleano, consulta y lee el estado de compresión de websocket, el valor predeterminado es falso
1Boolean WebSocketMessage.compress;
maxSize
Entero, consulta y establece el tamaño máximo de paquete en bytes, el valor predeterminado es 67108864 (64M)
1Integer WebSocketMessage.maxSize;
value
Cadena, el contenido básico del mensaje.
1String WebSocketMessage.value;
params
NArray, los parámetros básicos del mensaje.
1readonly NArray WebSocketMessage.params;
type
Entero, tipo de mensaje
1Integer WebSocketMessage.type;
data
Valor, consulta los datos del mensaje. Este atributo devolverá diferentes datos según el tipo de contenido. Cuando sea texto, se devolverá el texto.jsonregresar cuandojson, de lo contrario devuelve binario
1readonly Value WebSocketMessage.data;
body
SeekableStream, un objeto de flujo que contiene la parte de datos del mensaje
1SeekableStream WebSocketMessage.body;
length
Long, la longitud de la parte de datos del mensaje.
1readonly Long WebSocketMessage.length;
stream
Stream, el objeto de flujo al consultar el mensaje readFrom
1readonly Stream WebSocketMessage.stream;
lastError
Cadena, consulta y establece el último error de procesamiento de mensajes
1String WebSocketMessage.lastError;
función miembro
read
Lee datos de tamaño especificado de la secuencia. Este método es un alias del método correspondiente del cuerpo.
1Buffer WebSocketMessage.read(Integer bytes = -1) async;
Parámetros de llamada:
- bytes: Entero, especifica la cantidad de datos que se leerán. El valor predeterminado es leer bloques de datos de tamaño aleatorio. El tamaño de los datos leídos depende del dispositivo.
Resultados de devolución:
- Buffer, devuelve los datos leídos de la secuencia. Si no hay datos para leer o la conexión se interrumpe, se devuelve nulo.
readAll
Lea todos los datos restantes de la secuencia. Este método es un alias del método correspondiente del cuerpo.
1Buffer WebSocketMessage.readAll() async;
Resultados de devolución:
- Buffer, devuelve los datos leídos de la secuencia. Si no hay datos para leer o la conexión se interrumpe, se devuelve nulo.
write
Escribe los datos dados. Este método es un alias del método correspondiente en el cuerpo.
1WebSocketMessage.write(Buffer data) async;
Parámetros de llamada:
- data:Buffer, dados los datos a escribir
json
Escribe los datos dados en codificación JSON.
1Value WebSocketMessage.json(Value data);
Parámetros de llamada:
- data: Valor, dados los datos a escribir
Resultados de devolución:
- Value, este método no devuelve datos
Analizar los datos del mensaje como codificación JSON.
1Value WebSocketMessage.json();
Resultados de devolución:
- Value, devuelve el resultado analizado
pack
pormsgpackLa codificación escribe los datos dados.
1Value WebSocketMessage.pack(Value data);
Parámetros de llamada:
- data: Valor, dados los datos a escribir
Resultados de devolución:
- Value, este método no devuelve datos
pormsgpackCodificar y analizar los datos del mensaje.
1Value WebSocketMessage.pack();
Resultados de devolución:
- Value, devuelve el resultado analizado
end
Establecer el final del procesamiento del mensaje actual,ChainEl procesador no continúa con transacciones posteriores.
1WebSocketMessage.end();
isEnded
Consultar si el mensaje actual ha finalizado
1Boolean WebSocketMessage.isEnded();
Resultados de devolución:
- Boolean, devuelve verdadero cuando termina
clear
Borrar contenido del mensaje
1WebSocketMessage.clear();
sendTo
Envía un mensaje formateado al objeto de flujo dado
1WebSocketMessage.sendTo(Stream stm) async;
Parámetros de llamada:
- stm:Stream, especifica el objeto de flujo que recibe el mensaje formateado
readFrom
Lee el mensaje formateado del objeto de flujo de caché dado y analiza el objeto poblado
1WebSocketMessage.readFrom(Stream stm) async;
Parámetros de llamada:
- stm:Stream, especifica el objeto de flujo para leer mensajes formateados.
toString
Devuelve la representación de cadena del objeto. Generalmente, se devuelve "[Objeto nativo]". El objeto se puede volver a implementar de acuerdo con sus propias características.
1String WebSocketMessage.toString();
Resultados de devolución:
- String, devuelve la representación de cadena del objeto
toJSON
Devuelve una representación en formato JSON del objeto, que generalmente devuelve una colección de propiedades legibles definidas por el objeto.
1Value WebSocketMessage.toJSON(String key = "");
Parámetros de llamada:
- key: Cadena, no utilizada
Resultados de devolución:
- Value, devuelve un valor que contiene JSON serializable