Usando WebSockets en Java

Si cree que el contenido de este blog es útil o inspirador para usted, siga mi blog para obtener los últimos artículos técnicos y tutoriales lo antes posible. Al mismo tiempo, también puedes dejar un mensaje en el área de comentarios para compartir tus pensamientos y sugerencias. ¡Gracias por tu apoyo!

1. Introducción

1.1 ¿Qué es WebSocket?

WebSocket es un protocolo para establecer una conexión de comunicación bidireccional en tiempo real entre una aplicación web y un servidor. Proporciona una conexión persistente a través de una única conexión TCP, lo que permite que las aplicaciones web entreguen datos en tiempo real. El protocolo WebSocket fue desarrollado originalmente por el W3C y se convirtió en estándar en 2011.

1.2 Ventajas y desventajas de WebSocket

Las ventajas de WebSockets incluyen:

  1. Tiempo real: debido a la conexión persistente de WebSocket, puede realizar la transmisión de datos en tiempo real, evitando la situación en la que la aplicación web necesita enviar solicitudes continuamente para obtener los datos más recientes.
  2. Comunicación bidireccional: el protocolo WebSocket admite la comunicación bidireccional, lo que significa que el servidor puede enviar datos activamente al cliente sin que el cliente envíe una solicitud.
  3. Carga de red reducida: debido a la conexión persistente de WebSocket, puede reducir la cantidad de solicitudes HTTP, reduciendo así la carga de la red.

Las desventajas de WebSocket incluyen:

  1. Se requiere compatibilidad tanto con el navegador como con el servidor: WebSocket es una tecnología relativamente nueva que requiere compatibilidad tanto con el navegador como con el servidor. Es posible que algunos navegadores y servidores antiguos no admitan WebSocket.
  2. Se requiere una sobrecarga adicional: WebSocket necesita mantener una conexión a largo plazo en el servidor, lo que requiere una sobrecarga adicional, incluida la memoria y la CPU.
  3. Problemas de seguridad: dado que WebSocket permite que el servidor envíe datos activamente al cliente, puede haber problemas de seguridad. El servidor debe asegurarse de enviar datos únicamente a clientes legítimos.

2. El concepto básico de WebSocket

2.1 Protocolo WebSocket

El protocolo WebSocket es un protocolo basado en TCP para establecer una conexión persistente entre un cliente y un servidor, y puede intercambiar datos en tiempo real a través de esta conexión. El protocolo WebSocket tiene su propio protocolo de intercambio para establecer una conexión, así como su propio formato de transmisión de datos.

Cuando un cliente envía una solicitud WebSocket, el servidor enviará una respuesta de protocolo para reconocer la solicitud. Durante el protocolo de enlace, el cliente y el servidor negociarán la versión del protocolo a utilizar, los subprotocolos admitidos, las opciones de extensión admitidas, etc. Una vez que se completa el protocolo de enlace, la conexión permanece abierta y el cliente y el servidor pueden pasar datos a través de la conexión en tiempo real.

El protocolo WebSocket utiliza transmisión de datos bidireccional, es decir, tanto el cliente como el servidor pueden enviarse datos entre sí en cualquier momento sin esperar la solicitud de la otra parte. Admite datos binarios y datos de texto, y puede realizar conversiones libremente entre ellos.

En resumen, el protocolo WebSocket es un protocolo de comunicación confiable, eficiente, bidireccional y persistente, adecuado para aplicaciones web que requieren comunicación en tiempo real, como juegos en línea, chat en tiempo real, etc.

2.2 El ciclo de vida de WebSocket

El ciclo de vida de WebSocket describe el proceso de una conexión WebSocket desde su creación hasta su cierre. Una conexión WebSocket consta de las siguientes cuatro fases principales:

  1. Fase de establecimiento de conexión (establecimiento de conexión): en esta fase se establece la conexión WebSocket entre el cliente y el servidor. El cliente envía una solicitud de protocolo de enlace WebSocket, el servidor responde con una respuesta de protocolo de enlace y se establece la conexión.
  2. Fase de apertura de conexión (conexión abierta): en esta fase, la conexión WebSocket se ha establecido y abierto, y el cliente y el servidor pueden enviarse datos entre sí en la conexión.
  3. Fase de cierre de conexión (Connection Closing): En esta fase, una conexión WebSocket está a punto de cerrarse. Puede ser iniciado por el cliente o el servidor para cerrar la conexión enviando una trama de cierre.
  4. Fase de Conexión Cerrada (Connection Closed): En esta fase la conexión WebSocket se ha cerrado por completo. Cualquier interacción entre cliente y servidor no tendrá ningún efecto.

Cabe señalar que la conexión WebSocket puede cerrarse en cualquier momento, como una falla de la red, una falla del servidor, etc., que pueden provocar el cierre de la conexión. Por lo tanto, es necesario manejar el evento de cierre de la conexión WebSocket a tiempo para garantizar la confiabilidad y estabilidad de la aplicación.

El siguiente es un diagrama simple del ciclo de vida de WebSocket:

+----------+                        +----------+
                 |  Client  |                        | Server   |
                 +----------+                        +----------+
                      |                                     |
                      |        WebSocket 握手请求           |
                      +------------------------------------>|
                      |                                     |
                      |      WebSocket 握手响应              |
                      |<------------------------------------+
                      |                                     |
                      |         WebSocket 连接开放           |
                      |                                     |
                      |                                     |
                      |                                     |
                      |                                     |
                      |          WebSocket 连接关闭          |
                      |<------------------------------------>|
                      |                                     |
                      |        WebSocket 连接关闭完成        |
                      |                                     |
                 +----------+                        +----------+
                 |  Client  |                        | Server   |
                 +----------+                        +----------+

En este diagrama, el cliente envía una solicitud de protocolo de enlace WebSocket al servidor, el servidor responde con una respuesta de protocolo de enlace y se establece la conexión. Una vez establecida la conexión, el cliente y el servidor pueden enviarse datos entre sí a través de la conexión hasta que uno de ellos envíe una trama de cierre para cerrar la conexión. Una vez recibida la trama de cierre, la conexión se cierra y la conexión WebSocket se cierra.

2.3 Formato de mensaje WebSocket

El formato de mensaje para WebSocket difiere del de las solicitudes y respuestas HTTP. El formato del mensaje de WebSocket puede ser texto o datos binarios, y la transmisión del mensaje WebSocket se lleva a cabo en una conexión establecida, por lo que no es necesario realizar una operación de protocolo de enlace de solicitud y respuesta HTTP.

El formato de mensaje WebSocket consta de dos partes: encabezado y cuerpo del mensaje.

El encabezado del mensaje contiene la siguiente información:

  1. FIN: Indica que se trata de un mensaje completo, normalmente 1.
  2. RSV1, RSV2, RSV3: no utilizado temporalmente, generalmente 0.
  3. Código de operación: indica el tipo de mensaje, incluido mensaje de texto, mensaje binario, etc.
  4. Máscara: Indica si el mensaje está cifrado.
  5. Longitud de la carga útil: indica la longitud del cuerpo del mensaje.
  6. Clave de enmascaramiento: aparece solo cuando es necesario cifrar el mensaje y se utiliza para descifrarlo.

El cuerpo del mensaje son los datos reales transmitidos, que pueden ser texto o datos binarios.

2.4 API de WebSocket

La API WebSocket es una colección de interfaces para crear y administrar conexiones WebSocket en aplicaciones web. La API WebSocket es compatible de forma nativa con los navegadores y se puede utilizar directamente en JavaScript sin utilizar bibliotecas o marcos de JavaScript adicionales.

A continuación se muestran algunas API de WebSocket de uso común:

  1. Constructor WebSocket: el constructor WebSocket se utiliza para crear un objeto WebSocket. Acepta una URL como argumento, que representa la dirección del servidor WebSocket al que conectarse. Por ejemplo:

let ws = new WebSocket('ws://example.com/ws');
  1. Método WebSocket.send(): El método WebSocket.send() se utiliza para enviar datos al servidor. Acepta un parámetro que representa los datos a enviar. Los datos pueden ser una cadena, un objeto Blob o un objeto ArrayBuffer. Por ejemplo:

ws.send('Hello, server!');
  1. Evento WebSocket.onopen: el evento WebSocket.onopen se activa cuando se establece correctamente una conexión WebSocket. Por ejemplo:

ws.onopen = function() {
  console.log('WebSocket 连接已经建立。');
};
  1. Evento WebSocket.onmessage: el evento WebSocket.onmessage se activa cuando se recibe un mensaje enviado por el servidor. Su objeto de evento contiene un atributo de datos que representa los datos recibidos. Por ejemplo:

ws.onmessage = function(event) {
  console.log('收到服务器消息:', event.data);
};
  1. Evento WebSocket.onerror: el evento WebSocket.onerror se activa cuando hay un error con la conexión WebSocket. Por ejemplo:

ws.onerror = function(event) {
  console.error('WebSocket 连接出现错误:', event);
};
  1. Evento WebSocket.onclose: el evento WebSocket.onclose se activa cuando se cierra la conexión WebSocket. Por ejemplo:

ws.onclose = function() {
  console.log('WebSocket 连接已经关闭。');
};

Las anteriores son algunas API de WebSocket de uso común.

3. Usando WebSocket en Java

confiar:

<dependency>
    <groupId>javax.websocket</groupId>
    <artifactId>javax.websocket-api</artifactId>
    <version>1.1</version>
</dependency>

3.1 Escriba un servidor WebSocket utilizando la API Java WebSocket

El siguiente es un código de muestra para escribir un servidor WebSocket utilizando la API Java WebSocket:

import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;

@ServerEndpoint("/echo")
public class EchoServer {

    @OnOpen
    public void onOpen(Session session) {
        System.out.println("WebSocket 连接已经建立。");
    }

    @OnMessage
    public void onMessage(String message, Session session) throws IOException {
        System.out.println("收到客户端消息:" + message);
        session.getBasicRemote().sendText("服务器收到消息:" + message);
    }

    @OnClose
    public void onClose() {
        System.out.println("WebSocket 连接已经关闭。");
    }

    @OnError
    public void onError(Throwable t) {
        System.out.println("WebSocket 连接出现错误:" + t.getMessage());
    }
}

Este código de muestra define un punto final de WebSocket llamado "echo", que escuchará los mensajes del cliente y devolverá los mensajes recibidos al cliente. Específicamente, utiliza la anotación @ServerEndpoint para especificar la URL del punto final de WebSocket y las anotaciones @OnOpen, @OnMessage, @OnClose y @OnError para definir los controladores de eventos de WebSocket.

Para utilizar este servidor WebSocket, debemos implementarlo en un contenedor web que admita WebSocket. Por ejemplo, podemos usar Tomcat 8 o superior para ejecutarlo. Una vez completada la implementación, podemos usar cualquier cliente que admita WebSocket para conectarnos al servidor, enviar mensajes y recibir respuestas del servidor. Por ejemplo, aquí hay un código de cliente HTML/JavaScript simple:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>WebSocket Demo</title>
    <script>
        var ws = new WebSocket('ws://localhost:8080/echo');
        ws.onopen = function() {
            console.log('WebSocket 连接已经建立。');
            ws.send('Hello, server!');
        };
        ws.onmessage = function(event) {
            console.log('收到服务器消息:', event.data);
        };
        ws.onerror = function(event) {
            console.error('WebSocket 连接出现错误:', event);
        };
        ws.onclose = function() {
            console.log('WebSocket 连接已经关闭。');
        };
    </script>
</head>
<body>
    <h1>WebSocket Demo</h1>
</body>
</html>

Este cliente utiliza el constructor WebSocket para crear un objeto WebSocket y especifica que la URL de conexión es la URL del servidor que implementamos anteriormente. Utiliza controladores de eventos WebSocket para manejar eventos WebSocket, por ejemplo, cuando una conexión WebSocket se establece exitosamente, envía un mensaje al servidor e imprime el contenido del mensaje cuando recibe una respuesta del servidor.

3.2 Escriba un cliente WebSocket utilizando la API Java WebSocket

A continuación se muestra un código de muestra para escribir un cliente WebSocket utilizando la API Java WebSocket:

import javax.websocket.*;
import java.io.IOException;
import java.net.URI;

@ClientEndpoint
public class EchoClient {

    private Session session;

    @OnOpen
    public void onOpen(Session session) {
        System.out.println("WebSocket 连接已经建立。");
        this.session = session;
    }

    @OnMessage
    public void onMessage(String message, Session session) {
        System.out.println("收到服务器消息:" + message);
    }

    @OnClose
    public void onClose() {
        System.out.println("WebSocket 连接已经关闭。");
    }

    @OnError
    public void onError(Throwable t) {
        System.out.println("WebSocket 连接出现错误:" + t.getMessage());
    }

    public void connect(String url) throws Exception {
        WebSocketContainer container = ContainerProvider.getWebSocketContainer();
        container.connectToServer(this, new URI(url));
    }

    public void send(String message) throws IOException {
        session.getBasicRemote().sendText(message);
    }

    public void close() throws IOException {
        session.close();
    }
}

3.3 Utilice Spring Boot para escribir el servidor WebSocket

Crear un proyecto Spring Boot

Primero, necesita crear un nuevo proyecto Spring Boot. Puede usar Spring Initializr para crear un nuevo proyecto y agregar dependencias.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

Configurar WebSockets

En la aplicación, es necesario configurar WebSocket. Cree una nueva clase Java y agregue la anotación @ServerEndpoint("/websocket"). Esto especificará el punto final del servidor WebSocket.

En esta clase, es necesario implementar varios métodos:

import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;

@ServerEndpoint("/websocket")
public class WebSocketServer {

    @OnOpen
    public void onOpen(Session session) {
        System.out.println("Connection opened: " + session.getId());
        sessions.add(session);
    }

    @OnMessage
    public void onMessage(Session session, String message) throws IOException {
        System.out.println("Received message: " + message);
        session.getBasicRemote().sendText("Server received: " + message);
    }

    @OnClose
    public void onClose(Session session) {
        System.out.println("Connection closed: " + session.getId());
        sessions.remove(session);
    }

    private static final Set<Session> sessions = Collections.synchronizedSet(new HashSet<Session>());
}

Manejar mensajes de WebSocket

En el método @OnMessage, puede procesar el mensaje enviado por el cliente WebSocket y enviar una respuesta al cliente. Aquí hay un código de muestra simple:

@OnMessage
public void onMessage(Session session, String message) throws IOException {
    System.out.println("Received message: " + message);
    session.getBasicRemote().sendText("Server received: " + message);
}

En este código, simplemente imprimimos el mensaje recibido y enviamos una respuesta al cliente.

Cerrar la conexión WebSocket

En el método @OnClose, puede eliminar la conexión y realizar una limpieza. Aquí hay un código de muestra:

@OnClose
public void onClose(Session session) {
    System.out.println("Connection closed: " + session.getId());
    sessions.remove(session);
}

En este código, eliminamos la conexión del grupo de conexiones e imprimimos un mensaje de conexión cerrada.

Configurar el soporte de WebSocket

Finalmente, Spring Boot debe configurarse para admitir WebSocket. Cree una nueva clase Java y agregue anotaciones @Configuration y @EnableWebSocket. Luego, debe anular el método RegisterWebSocketHandlers() y especificar el controlador WebSocket. Aquí hay un código de muestra:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(new WebSocketServer(), "/websocket").setAllowedOrigins("*");
    }
}

En este código, creamos un nuevo objeto WebSocketServer y lo agregamos al controlador WebSocket. También especificamos el punto final de WebSocket (/websocket) y los orígenes permitidos (*).

Cuarto, formato de mensaje WebSocket

4.1 Mensajes de texto y mensajes binarios

Los mensajes de texto son cadenas de texto Unicode normales. Cuando se establece una conexión WebSocket, el cliente y el servidor pueden intercambiar información entre sí mediante el envío de mensajes de texto. El servidor puede usar el método getBasicRemote() del objeto Session para enviar mensajes de texto al cliente, y el cliente puede usar el método WebSocket send() para enviar mensajes de texto al servidor.

Aquí hay un código de muestra para enviar un mensaje de texto a un cliente:

session.getBasicRemote().sendText("Hello, client!");

Los mensajes binarios pueden ser cualquier tipo de datos, incluidas imágenes, audio, vídeo, etc. Para enviar un mensaje binario al cliente, el servidor puede usar el método getBasicRemote() del objeto Session para enviar el mensaje como un objeto ByteBuffer. Los clientes pueden utilizar el método send() de WebSocket para enviar mensajes binarios al servidor.

Aquí hay un código de muestra para enviar un mensaje binario a un cliente:

byte[] data = // binary data
ByteBuffer buffer = ByteBuffer.wrap(data);
session.getBasicRemote().sendBinary(buffer);

Tenga en cuenta que, aunque los mensajes de texto y los mensajes binarios difieren en formato, ambos son tipos de mensajes enviados a través de WebSockets, por lo que tanto el cliente como el servidor deben poder manejar ambos tipos de mensajes.

4.2 Mensajes ping y pong

WebSocket también admite tipos de mensajes Ping y Pong para detectar si una conexión WebSocket todavía está activa. El cliente envía mensajes ping al servidor y el servidor envía mensajes Pong al cliente en respuesta. Si el cliente no recibe un mensaje Pong durante un período de tiempo, puede asumir que la conexión WebSocket está interrumpida y cerrar la conexión.

Para enviar un mensaje Ping, utilice el método getBasicRemote() del objeto Session y envíe el mensaje Ping como un objeto ByteBuffer. El cliente puede utilizar el método sendPing() de WebSocket para enviar un mensaje Ping al servidor.

A continuación se muestra el código de muestra para enviar un mensaje Ping al cliente:

ByteBuffer pingMessage = ByteBuffer.wrap(new byte[] { 8, 9, 10 });
session.getBasicRemote().sendPing(pingMessage);

Para recibir mensajes Pong, implemente el método onPong() en su controlador WebSocket. Cuando su servidor WebSocket recibe un mensaje Pong, llamará automáticamente a este método y le pasará el mensaje Pong recibido como un objeto ByteBuffer.

El siguiente es el código de muestra para implementar el método onPong():

@OnMessage
public void onPong(Session session, ByteBuffer pongMessage) {
    System.out.println("Received Pong message: " + pongMessage);
}

Tenga en cuenta que los mensajes Ping y Pong se utilizan normalmente para comprobar el estado de las conexiones WebSocket. Si desea utilizar esta funcionalidad en una conexión WebSocket, debe enviar periódicamente mensajes Ping y esperar respuestas de los mensajes Pong.

4.3 Cerrar el mensaje

WebSocket también admite el tipo de mensaje de cierre, que se utiliza para cerrar la conexión WebSocket. Los mensajes de cierre pueden ser iniciados por el cliente o el servidor y pueden contener un código de estado opcional y un motivo del cierre. Cuando se cierra una conexión WebSocket, tanto el cliente como el servidor deben enviar un mensaje de cierre para finalizar la conexión.

Para enviar un mensaje de cierre, utilice el método getBasicRemote() del objeto Session y llame a su método sendClose(). Los mensajes de cierre pueden llevar un código de estado opcional y un motivo del cierre. Puede configurarlos en 0 y nulos si no desea que se envíe el código de estado o el motivo de apagado.

Aquí hay un código de muestra que envía un mensaje de cierre al cliente:

session.close(new CloseReason(CloseReason.CloseCodes.NORMAL_CLOSURE, "Closing from client."));

Para manejar los mensajes de cierre recibidos, implemente el método onClose() en su controlador WebSocket. Cuando su servidor WebSocket reciba un mensaje de cierre, llamará automáticamente a este método y le pasará el código de estado recibido y el motivo del cierre.

El siguiente es un código de muestra para implementar el método onClose():

@OnClose
public void onClose(Session session, CloseReason closeReason) {
    System.out.println("Connection closed: " + closeReason.getCloseCode() + " - " + closeReason.getReasonPhrase());
}

Tenga en cuenta que tanto el cliente como el servidor deben enviar un mensaje de cierre para finalizar la conexión WebSocket. Si solo un lado envía un mensaje de cierre, es posible que el otro lado no cierre la conexión correctamente y que tenga que esperar un tiempo de espera antes de liberar recursos. Se recomienda que tanto el cliente como el servidor envíen un mensaje de cierre al cerrar una conexión para garantizar que la conexión se cierre correctamente.

Cinco, rendimiento de WebSocket

5.1 Comparación con el modelo tradicional de solicitud/respuesta HTTP

  1. Mejor rendimiento de la comunicación bidireccional : el protocolo WebSocket utiliza una única conexión TCP, lo que permite que el cliente y el servidor se comuniquen bidireccionalmente en la misma conexión. Esta comunicación bidireccional en tiempo real permite que los datos se transfieran más rápidamente sin la necesidad de establecer múltiples conexiones HTTP de solicitud/respuesta.
  2. Menos tráfico de red : en comparación con HTTP, el protocolo WebSocket requiere menos tráfico de red para mantener una conexión porque no necesita enviar encabezados con cada intercambio de solicitud/respuesta.
  3. Menor latencia : el protocolo WebSocket permite que el servidor envíe mensajes activamente al cliente sin necesidad de que el cliente envíe una solicitud primero. Esta comunicación en tiempo real reduce la latencia de respuesta y mejora el rendimiento de la aplicación.
  4. Mejor gestión de recursos del servidor : dado que las conexiones WebSocket se pueden mantener activas, el servidor puede gestionar mejor las conexiones de los clientes, lo que reduce la sobrecarga del servidor y el tiempo de procesamiento.

El rendimiento del protocolo WebSocket es mejor que el modelo tradicional de solicitud/respuesta HTTP, especialmente en términos de comunicación en tiempo real y baja latencia. El protocolo WebSocket es adecuado para aplicaciones que requieren comunicación en tiempo real y actualizaciones de datos en tiempo real, como chat en línea, juegos multijugador, monitoreo en tiempo real, etc.

5.2 Optimización del rendimiento de WebSocket

  1. Tamaño de mensaje reducido : el tamaño de los datos transferidos por WebSocket tiene un gran impacto en el rendimiento. Minimizar el tamaño de los mensajes reduce el ancho de banda de la red y la carga del servidor. Por ejemplo, se puede utilizar un protocolo de transferencia binaria en lugar de transferencia de texto, o se puede utilizar un algoritmo de compresión para comprimir mensajes.
  2. Utilice CDN para acelerar : utilice CDN (Content Delivery Network) para almacenar en caché recursos estáticos en nodos más cercanos a los usuarios, mejorando la velocidad de transmisión y el rendimiento. CDN puede almacenar en caché la solicitud de protocolo de enlace inicial de Websocket para evitar retrasos innecesarios en la red.
  3. Utilice el equilibrio de carga : los servicios WebSocket pueden utilizar el equilibrio de carga para distribuir y equilibrar la carga de varios servidores. El equilibrio de carga evita que los servidores individuales se sobrecarguen y mejora la escalabilidad de todo el servicio.
  4. Optimización del código del lado del servidor : el rendimiento del código del lado del servidor WebSocket también es un factor clave. El uso de marcos y algoritmos eficientes para evitar el uso excesivo de memoria y recursos de CPU puede mejorar el rendimiento y la velocidad de respuesta del servidor.
  5. Evite la congestión de la red : el rendimiento de WebSocket también puede verse afectado por la congestión de la red. Cuando hay demasiadas conexiones solicitando datos al mismo tiempo, el rendimiento del servidor se degradará. El uso de un grupo de subprocesos adecuado y operaciones de E/S asincrónicas puede evitar el bloqueo de la red y mejorar el rendimiento concurrente de los servicios WebSocket.

6. Aplicación ampliada y dirección de desarrollo futuro de WebSocket

  1. Especificaciones estándar más completas: todavía hay muchas áreas que se pueden optimizar en la especificación estándar WebSocket. En el futuro, la especificación estándar WebSocket puede seguir mejorándose para adaptarse a escenarios de aplicaciones más complejos.
  2. Un método de comunicación más seguro: debido a la apertura de WebSocket, puede estar sujeto a algunas amenazas de seguridad. En el futuro, la seguridad de WebSocket puede mejorarse mediante cifrado y autenticación.
  3. Mejor compatibilidad: el protocolo WebSocket necesita establecer una conexión basada en el protocolo HTTP, por lo que puede encontrar problemas de compatibilidad y se pueden utilizar medios técnicos para resolver estos problemas en el futuro.
  4. Mejor rendimiento y escalabilidad: el rendimiento y la escalabilidad del protocolo WebSocket son críticos para escenarios de aplicaciones complejos. En el futuro, se pueden utilizar medios técnicos para mejorar aún más el rendimiento y la escalabilidad de WebSocket.

Si cree que el contenido de este blog es útil o inspirador para usted, siga mi blog para obtener los últimos artículos técnicos y tutoriales lo antes posible. Al mismo tiempo, también puedes dejar un mensaje en el área de comentarios para compartir tus pensamientos y sugerencias. ¡Gracias por tu apoyo!

Supongo que te gusta

Origin blog.csdn.net/bairo007/article/details/131779053
Recomendado
Clasificación