Skip to content

Ejemplo Elysia: Gateway Micro Socket

Implementación en Elysia (Bun) del gateway Micro Socket: endpoints WebSocket (/ws, /ws/sub/:topic), modelo sub-socket y difusión escalable.


Resumen

El ejemplo está en examples/elysia-micro-socket/.

  • WebSocket: /ws (multi-topic) y /ws/sub/:topic (sub WebSocket).
  • Store sub-socket: Map<topic, Set<connectionId>>; broadcast O(suscriptores) por topic.
  • Backbone en memoria; NATS/Kafka para escalado horizontal.
  • Dedup (I₂) por messageId y usuario; Redis en producción.
  • Auth demo: token no vacío; JWT + ACL en producción.

Ejecución

bash
cd examples/elysia-micro-socket
bun install
bun run dev
RecursoURL
Docs + enviar peticiones WShttp://localhost:3000/docs — Connect, luego Send (setup, subscribe, publish); respuestas en el log
OpenAPI (Scalar)http://localhost:3000/openapi
WebSocket (multi-topic)ws://localhost:3000/ws
WebSocket (sub)ws://localhost:3000/ws/sub/prices (ejemplo)
EstadísticasGET http://localhost:3000/stats
Publicación demoGET http://localhost:3000/demo/publish/:topic?key=value

Enviar peticiones por WebSocket

  1. Abre http://localhost:3000/docs.
  2. En WebSocket elige URL: /ws o /ws/sub/prices (botones) y pulsa Connect.
  3. Mensaje setup (token), Send → en el log aparecen ready y subscribed si aplica.
  4. Usa subscribe / unsubscribe / publish y Send para enviar; las respuestas aparecen en el log (← verde).

Protocolo (resumen)

Cliente → ServidorServidor → Cliente
setup + token (+ topics opcional)ready + sessionId, subscribed (por URL/topics)
subscribe + topicsubscribed + topic
unsubscribe + topicunsubscribed + topic
publish + topic, messageId, payloadack + messageId, status (ok | duplicate)
message + topic, seqNo, messageId, data
error + code, message

Referencia completa (HTTP, mensajes, arquitectura): página en inglés.

Star the repo on GitHub if this documentation is useful — link in the navbar above.