.NET Eventos del lado del servidor con MongoDB Change Streams

Quieres actualizaciones en tiempo real en ASP.NET Core. Lo primero que podrías pensar son los WebSockets.

Hay una forma más sencilla para paneles de control y feeds. Puedes usar MongoDB Change Streams y Server-Sent Events (SSE).

Esta configuración proporciona streaming unidireccional desde tu servidor hacia el cliente con muy poco código.

Cómo funciona:

  • MongoDB Change Streams detectan cambios en la base de datos al instante.
  • SSE envía esos cambios al navegador a través de una única conexión HTTP.
  • Evitas el polling constante, lo que ahorra recursos del servidor.

SSE es una API nativa del navegador. Funciona mediante una respuesta HTTP de larga duración y admite reconexiones automáticas. Es perfecto para:

  • Líneas de tiempo en vivo
  • Notificaciones
  • Feeds de actividad
  • Paneles de administración

En las Minimal APIs de ASP.NET Core, puedes implementar esto usando TypedResults.ServerSentEvents.

El flujo de código sigue estos pasos:

  1. Tu aplicación abre un cursor de change stream en MongoDB.
  2. MongoDB emite eventos cuando los datos cambian.
  3. Tu aplicación mapea estos cambios al cliente.

Una de las mayores ventajas es la capacidad de reanudar los streams. MongoDB proporciona un token de reanudación (resume token) para cada cambio. Puedes pasar este token a través del encabezado Last-Event-ID. Cuando un navegador se reconecta, envía el último ID que vio. Tu aplicación lee este ID y le indica a MongoDB que comience exactamente donde se quedó.

¿Cuándo deberías usar SSE en lugar de SignalR?

Usa SSE si:

  • Solo necesitas actualizaciones de servidor a cliente.
  • Quieres una configuración ligera basada en texto.
  • Quieres usar APIs nativas del navegador.

Usa SignalR si:

  • Necesitas comunicación bidireccional.
  • Necesitas funciones complejas como grupos o hubs.
  • Necesitas negociación automática de transporte (WebSockets, Long Polling).

Empieza con SSE para feeds en vivo sencillos. Pásate a SignalR solo cuando tu aplicación requiera una interacción más rica.

Nota: MongoDB Change Streams requieren un replica set o un sharded cluster. No funcionan en un servidor independiente (standalone).

Source: https://dev.to/mongodb/net-server-side-events-with-mongodb-change-streams-5dfb

Optional learning community: https://t.me/GyaanSetuAi