No todo es HTTP, hay vida más allá - Parte 1
Hola amante de la comunicación HTTP/s,
Qué bonita es verdad…
Tú mandas un mensaje, te quedas esperando a que te respondan….
Sigues esperando…
Y sigues esperando…
Y esperas…
Ya no sabes cómo sentarte.
Te empiezas a poner nervioso…. Porque habías mandado la petición, pero alguien te tendrá que responder.
Y eh! Ya te responde.
Venga, ya puedes seguir con tu vida normal.
Pues esto es lo que hacen nuestras APIs todos los días con las peticiones HTTP que le llegan del cliente.
Y es que… esta opción puede que no sea la que mejor se adapte a tus necesidades.
De hecho, puede que sea otro tipo de comunicación.
Pero… ¿Sabías que hay otras?
SOAP, GraphQL, gRPC y WebSockets.
A ver… que no te estoy diciendo que tires a la basura tu comunicación HTTP y te pongas a usar una de estas.
Lo importante es que tengas opciones y sepas cuándo es mejor una u otra.
Y por eso en este post y en el siguiente, te voy a explicar lo que son los WebSockets y cómo configurarlos de forma sencilla en tu proyecto de Spring Boot.
Pero como siempre….
Empecemos por el principio.
Y es que, si al leer la palabra WebSocket, solo te ha sonado a que una vez te lo preguntaron en una entrevista… sigue leyendo 😭.
¿Qué es esto de WebSocket?
Pues mira, un WebSocket es un canal de comunicación abierto y en tiempo real entre el cliente (ej.: tu navegador) y el servidor (tu API).
Olvídate de estar esperando a que te respondan o a tener que estar preguntando cada rato si hay algo nuevo.
Tienes que verlo cómo una comunicación bidireccional.
El cliente puede mandar datos al servidor.
Pero el servidor también manda datos al cliente.
Un ejemplo sencillito y al pié:
REST: suscriptor de Goico Programmer tiene que dejar su desarrollo parado, entrar en la página web de la newsletter y ver si ya se ha publicado el nuevo correo. Si no hay un post nuevo, tendrá que volver a recargar la página en un rato.
WebSocket: suscriptor de Goico Programmer está haciendo sus desarrollos del sprint y de repente… le llega un nuevo correo de su newsletter favorita.
¿Y cuándo se suele utilizar este tipo de comunicación?
Como siempre te digo, depende, tienes que ver si realmente te interesa añadirlo en tu API, pero los casos más típicos son:
Chats en tiempo real.
Dashboards que se van actualizando solos.
Notificaciones.
Videojuegos multijugador.
Ahora bien…
¿Y qué pinta tiene eso en Java con Spring Boot?
Pues antes de nada tengo que explicarte primero otro término.
STOMP
STOMP es un protocolo muy sencillo que va “encima” del WebSocket y nos ayuda a organizar los mensajes en canales (topics).
Piensa en él como el cartero que reparte las cartas en el buzón correcto.
👉 Ejemplo muy básico de cómo será con Spring Boot (tranquilo que en el siguiente post te lo explico en detalle):
Activas el soporte de WebSocket en tu aplicación (
@EnableWebSocketMessageBroker).Defines un endpoint para conectarte, por ejemplo
/ws.Creas un “topic” como
/topic/mensajes.Tu cliente (el navegador) se suscribe a ese topic, y cada vez que tu API mande un mensaje allí… le llega al instante.
¿Te suena bien?
Lo sé, ¿Sabes qué es lo mejor de todo?
Pues que con 3-4 anotaciones y una clase de configuración ya tienes montado todo.
Pero… No quieras correr y para verlo, tendrás que esperar una semana, que, sino, el post se hacía muy largo y prefiero que entiendas primero los conceptos.
Nos leemos la próxima semana,


