Spring boot y websockets

Escenario

Un usuario se conecta con el móvil a su aplicación de empresa. Si es la primera vez que lo hace ésta le pide autorización para recabar su localización. La aplicación manda la localización al servidor y desde el servidor se informa a una página de monitorización. Dicha página está conectada por websocket con el servidor y no necesita recargarse para refrescar las localizaciones de los usuarios en un mapa. La aplicación usa Spring Boot v2.5.4.

Problema

En el tutorial oficial y otros encontrados gracias a Google, dan por hecho usar un cliente de sockjs para conectarse al servicio. En una página oficial de stompjs, sin embargo, sostienen lo contrario:
For Spring STOMP users: There are few tutorials/guides that implicitly suggest that you need SockJS to use STOMP. That is incorrect, you only need SockJS if you need to support old browsers.
Osea que solo es necesario si queremos dar soporte a navegadores anticuados. Dado que la aplicación corre en un entorno empresarial con la versión de navegadores controlada, decido prescindir de él.

Solución

De la parte del servidor vamos a necesitar cuatro ficheros: Un DTO para envolver los mensajes de ida: Otro DTO para los mensajes de vuelta: Un fichero para definir la configuración de los mensajes del websocket: Y un controlador que reciba y envíe los mensajes: Nótese que tenemos una anotación @MessageMapping con el valor /hello. La usamos para especificar que nuestro método recibe mensajes en /stomp/hello. También tenemos la anotación @SendTo con el valor /topic/greetings para mandar los mensajes a aquellos clientes que estén suscritos a dicho recurso. Ahora necesitaremos instalar stomp-js para mandar y recibir mensajes a través de protocolo ws: npm i @stomp/stompjs --save Y el código de javascript sería algo así:

Publicaciones Similares

  • Configuración Jackrabbit + tomcat + aws s3

    El fin de este tutorial es configurar un servidor jackrabbit que utilice como almacenamiento el servicio S3 de Amazon AWS. Esta fuera del alcance del mismo la configuración del servicio S3 o como emplear el servidor jackrabbit en una aplicación. Apache Jackrabbit es un repositorio de contenido conforme con las especificaciones del API JCR. Ofrece…

  • |

    Actualización de Apache Guacamole server 1.0 → 1.2

    Escenario En el trabajo usamos Apache Guacamole para conectarnos a nuestros escritorios de la oficina desde casa. Apache Guacamole proporciona una puerta de entrada HTML5 para conectar con servicios de acceso remoto, como pueden ser VNC o RDP. Consta de dos : el servidor y el cliente que no tienen por qué correr en la…

  • Me obligaron a hacerlo

    Si eres programador y trabajas por cuenta ajena, probablemente alguna vez te haya tocado implantar una solución o funcionalidad en contra de lo que consideras básicos principios del sentido común. Después de todo, el cliente paga para que se haga lo que dice, independientemente de estándares, usabilidad o costes inútiles.

  • Hibernate no puede resolver la propiedad…

    Escenario En una aplicación Spring Boot v2.3.4 hay dos entidades Balance y Shop. Una tienda (shop) puede tener varios saldos y un saldo (Balance) ha de estar relacionado con una tienda. Además existen panaderías (Bakery) y sastrerías (TailorShop) que extienden la clase Shop:

    Y necesito saber cuál es la fecha del…

  • Instalando EAC en Ubuntu

    Para ser más concretos en Ubuntu 12.04. Ahí van los pasos: Para estar a la última me he instalo lo más nuevecito (hasta la fecha) de wine, en dos pasos: 1. Añadimos la fuente siguiente a nuestro repositorio: $ sudo add-apt-repository ppa:ubuntu-wine/ppa 2. El consabido: $ sudo apt-get update 3. seguido de un: $ sudo apt-get install wine1.7 4. Antes de proseguir configuramos mínimamente wine:…

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *