.NET 𝗦𝗲𝗿𝘃𝗲𝗿 𝗦𝗶𝗱𝗲 𝗘𝘃𝗲𝗻𝘁𝘀 𝘄𝗶𝘁𝗵 𝗠𝗼𝗻𝗴𝗼𝗗𝗕 𝗖𝗵𝗮𝗻𝗴𝗲 𝗦𝘁𝗿𝗲𝗮𝗺𝘀

તમે ASP.NET Core માં રીઅલ-ટાઇમ અપડેટ્સ ઈચ્છો છો. તમે કદાચ સૌથી પહેલા WebSockets વિશે વિચારશો.

ડેશબોર્ડ્સ અને ફીડ્સ માટે એક સરળ રીત છે. તમે MongoDB Change Streams અને Server-Sent Events (SSE) નો ઉપયોગ કરી શકો છો.

આ સેટઅપ ખૂબ જ ઓછા કોડ સાથે તમારા સર્વરથી ક્લાયન્ટ સુધી વન-વે (એકતરફી) સ્ટ્રીમિંગ પ્રદાન કરે છે.

તે કેવી રીતે કામ કરે છે:

  • MongoDB Change Streams તરત જ ડેટાબેઝના ફેરફારો શોધી કાઢે છે.
  • SSE એક સિંગલ HTTP કનેક્શન દ્વારા બ્રાઉઝર પર તે ફેરફારો પુશ કરે છે.
  • તમે સતત પોલિંગ (polling) ટાળી શકો છો, જે સર્વરના સંસાધનો બચાવે છે.

SSE એ નેટિવ બ્રાઉઝર API છે. તે લાંબા સમય સુધી ચાલતા (long-lived) HTTP રિસ્પોન્સ દ્વારા કામ કરે છે અને ઓટોમેટિક રીકનેક્ટને સપોર્ટ કરે છે. તે આના માટે પરફેક્ટ છે:

  • લાઈવ ટાઈમલાઈન્સ
  • નોટિફિકેશન્સ
  • એક્ટિવિટી ફીડ્સ
  • એડમિન ડેશબોર્ડ્સ

ASP.NET Core Minimal APIs માં, તમે TypedResults.ServerSentEvents નો ઉપયોગ કરીને આ અમલમાં મૂકી શકો છો.

કોડ ફ્લો આ સ્ટેપ્સ અનુસરે છે:

  1. તમારી એપ MongoDB માં ચેન્જ સ્ટ્રીમ કર્સર (change stream cursor) ખોલે છે.
  2. જ્યારે ડેટા બદલાય છે ત્યારે MongoDB ઇવેન્ટ્સ ઇમિટ કરે છે.
  3. તમારી એપ આ ફેરફારોને ક્લાયન્ટ સાથે મેપ કરે છે.

એક મોટો ફાયદો સ્ટ્રીમ્સને ફરીથી શરૂ કરવાની ક્ષમતા છે. MongoDB દરેક ફેરફાર માટે એક resume token આપે છે. તમે આ ટોકનને Last-Event-ID હેડર દ્વારા પાસ કરી શકો છો. જ્યારે બ્રાઉઝર ફરીથી કનેક્ટ થાય છે, ત્યારે તે છેલ્લે જોયેલ ID મોકલે છે. તમારી એપ આ ID વાંચે છે અને MongoDB ને બરાબર ત્યાંથી શરૂ કરવા કહે છે જ્યાંથી તે અટકી હતી.

તમારે SignalR ને બદલે SSE ક્યારે વાપરવું જોઈએ?

SSE નો ઉપયોગ કરો જો:

  • તમારે ફક્ત સર્વર-થી-ક્લાયન્ટ અપડેટ્સની જરૂર હોય.
  • તમે લાઇટવેઇટ, ટેક્સ્ટ-આધારિત સેટઅપ ઈચ્છતા હોવ.
  • તમે નેટિવ બ્રાઉઝર API નો ઉપયોગ કરવા માંગતા હોવ.

SignalR નો ઉપયોગ કરો જો:

  • તમારે ટુ-વે (bi-directional) કોમ્યુનિકેશનની જરૂર હોય.
  • તમારે ગ્રુપ્સ અથવા હબ્સ જેવી જટિલ સુવિધાઓની જરૂર હોય.
  • તમારે ઓટોમેટિક ટ્રાન્સપોર્ટ નેગોશિયેશન (WebSockets, Long Polling) ની જરૂર હોય.

સાદા લાઈવ ફીડ્સ માટે SSE થી શરૂઆત કરો. જ્યારે તમારી એપને વધુ રિચ ઇન્ટરેક્શનની જરૂર હોય ત્યારે જ SignalR પર જાઓ.

નોંધ: 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