SpringBoot Vue Websocket permite que el servidor envíe mensajes activamente al cliente
Este artículo utiliza un escenario práctico para presentar la aplicación de utilizar WebSocket para enviar mensajes activamente al cliente desde el servidor en un proyecto con separación de front-end y back-end. El contenido principal es el siguiente
Websocket es un protocolo para comunicación full-duplex a través de una única conexión TCP. Una vez que la conexión WebSocket se realiza correctamente, el servidor y el cliente pueden comunicarse en ambas direcciones. En escenarios donde se requiere envío de mensajes, Websocket puede ahorrar recursos del servidor y ancho de banda mejor que el sondeo, y puede comunicarse en más tiempo real.
Las características específicas son las siguientes
Hay un campo de estado en los datos de la lista del cliente. El servidor tarda mucho en procesarse. El campo de estado de los datos correspondientes se actualizará. una vez completado el procesamiento del valor, el flujo de procesamiento a través de Websocket es el siguiente:
Al inyectar la clase ServerEndpointExporter, se utiliza para registrar automáticamente el punto final de Websocket declarado mediante la anotación @ServerEndpoint en WebSocketContainer. se inicia el proyecto.
¿Por qué agregar un Bean ServerEndpointExporter y agregar anotaciones @ServerEndpoint y @Component a una clase para implementar la función Websocket del lado del servidor?
Java define un conjunto de javax.servlet-api. Un HttpServlet es un servicio HTTP. Java websocket no es una simple extensión basada en servlet-api, sino un conjunto recién definido de javax.websocket-api.
Un servicio websocket corresponde a un Endpoint. En correspondencia con ServletContext, websocket-api también define WebSocketContainer, y la interfaz para registrar websocket mediante programación es ServerContainer heredado de WebSocketContainer.
Un websocket puede aceptar y gestionar múltiples conexiones, por lo que puede considerarse como un servidor. Los contenedores de servlets convencionales admiten websocket, como tomcat, jetty, etc. Al consultar la documentación de la API de ServerContainer, ServerContainer se puede encontrar en el atributo ServletContext.