.NET Server-Side Events avec MongoDB Change Streams

Vous souhaitez des mises à jour en temps réel dans ASP.NET Core. Vous penserez peut-être d'abord aux WebSockets.

Il existe une méthode plus simple pour les tableaux de bord et les flux. Vous pouvez utiliser MongoDB Change Streams et les Server-Sent Events (SSE).

Cette configuration permet un streaming unidirectionnel de votre serveur vers votre client avec très peu de code.

Comment ça marche :

  • MongoDB Change Streams détectent instantanément les changements de la base de données.
  • SSE pousse ces changements vers le navigateur via une connexion HTTP unique.
  • Vous évitez le polling constant, ce qui économise les ressources du serveur.

SSE est une API de navigateur native. Elle fonctionne via une réponse HTTP de longue durée et prend en charge les reconnexions automatiques. C'est parfait pour :

  • Des chronologies en direct
  • Des notifications
  • Des flux d'activité
  • Des tableaux de bord d'administration

Dans les Minimal APIs d'ASP.NET Core, vous pouvez implémenter cela en utilisant TypedResults.ServerSentEvents.

Le flux de code suit ces étapes :

  1. Votre application ouvre un curseur de change stream dans MongoDB.
  2. MongoDB émet des événements lorsque les données changent.
  3. Votre application transmet ces changements au client.

Un avantage majeur est la capacité de reprendre les flux. MongoDB fournit un jeton de reprise (resume token) pour chaque changement. Vous pouvez transmettre ce jeton via l'en-tête `