.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 નો ઉપયોગ કરીને આ અમલમાં મૂકી શકો છો.
કોડ ફ્લો આ સ્ટેપ્સ અનુસરે છે:
- તમારી એપ MongoDB માં ચેન્જ સ્ટ્રીમ કર્સર (change stream cursor) ખોલે છે.
- જ્યારે ડેટા બદલાય છે ત્યારે MongoDB ઇવેન્ટ્સ ઇમિટ કરે છે.
- તમારી એપ આ ફેરફારોને ક્લાયન્ટ સાથે મેપ કરે છે.
એક મોટો ફાયદો સ્ટ્રીમ્સને ફરીથી શરૂ કરવાની ક્ષમતા છે. 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