MongoDB Change Streams के साथ .NET 𝗦𝗲𝗿𝘃𝗲𝗿 𝗦𝗶𝗱𝗲 𝗘𝘃𝗲𝗻𝘁𝘀
आप ASP.NET Core में रियल-टाइम अपडेट चाहते हैं। आप सबसे पहले WebSockets के बारे में सोच सकते हैं।
डैशबोर्ड और फीड के लिए एक सरल तरीका है। आप MongoDB Change Streams और Server-Sent Events (SSE) का उपयोग कर सकते हैं।
यह सेटअप बहुत कम कोड के साथ आपके सर्वर से क्लाइंट तक वन-वे स्ट्रीमिंग (one-way streaming) प्रदान करता है।
How it works:
- MongoDB Change Streams तुरंत डेटाबेस परिवर्तनों का पता लगा लेते हैं।
- SSE एक सिंगल HTTP कनेक्शन के माध्यम से उन परिवर्तनों को ब्राउज़र तक पहुँचाता है।
- आप लगातार पोलिंग (polling) से बच जाते हैं, जिससे सर्वर संसाधनों की बचत होती है।
SSE एक नेटिव ब्राउज़र API है। यह एक लॉन्ग-लिव्ड (long-lived) HTTP रिस्पॉन्स के माध्यम से काम करता है और ऑटोमैटिक रीकनेक्ट का समर्थन करता है। यह इनके लिए एकदम सही है:
- लाइव टाइमलाइन
- नोटिफिकेशन
- एक्टिविटी फीड
- एडमिन डैशबोर्ड
ASP.NET Core Minimal APIs में, आप इसे TypedResults.ServerSentEvents का उपयोग करके लागू कर सकते हैं।
The code flow follows these steps:
- आपका ऐप MongoDB में एक चेंज स्ट्रीम कर्सर (change stream cursor) खोलता है।
- डेटा बदलने पर MongoDB इवेंट्स जारी करता है।
- आपका ऐप इन परिवर्तनों को क्लाइंट तक पहुँचाता है।
एक बड़ा फायदा स्ट्रीम को फिर से शुरू (resume) करने की क्षमता है। MongoDB प्रत्येक परिवर्तन के लिए एक resume token प्रदान करता है। आप इस टोकन को Last-Event-ID हेडर के माध्यम से पास कर सकते हैं। जब ब्राउज़र फिर से कनेक्ट होता है, तो वह अपना पिछला देखा गया ID भेजता है। आपका ऐप इस ID को पढ़ता है और MongoDB को ठीक वहीं से शुरू करने के लिए कहता है जहाँ से उसने छोड़ा था।
When should you use SSE versus SignalR?
Use SSE if:
- आपको केवल सर्वर-टू-क्लाइंट अपडेट की आवश्यकता है।
- आप एक लाइटवेट, टेक्स्ट-आधारित सेटअप चाहते हैं।
- आप नेटिव ब्राउज़र API का उपयोग करना चाहते हैं।
Use SignalR if:
- आपको टू-वे (bi-directional) कम्युनिकेशन की आवश्यकता है।
- आपको ग्रुप्स या हब्स जैसी जटिल सुविधाओं की आवश्यकता है।
- आपको ऑटोमैटिक ट्रांसपोर्ट नेगोशिएशन (WebSockets, Long Polling) की आवश्यकता है।
साधारण लाइव फीड के लिए SSE से शुरुआत करें। SignalR पर तभी जाएँ जब आपके ऐप को अधिक समृद्ध इंटरैक्शन (richer interaction) की आवश्यकता हो।
Note: MongoDB Change Streams के लिए रेप्लिका सेट (replica set) या शेयर्ड क्लस्टर (sharded cluster) की आवश्यकता होती है। वे स्टैंडअलोन सर्वर पर काम नहीं करते हैं।
Source: https://dev.to/mongodb/net-server-side-events-with-mongodb-change-streams-5dfb
Optional learning community: https://t.me/GyaanSetuAi