React Academy · पाठ

EventSource के साथ React में SSE स्ट्रीम का उपयोग

useEffect में EventSource के साथ SSE एंडपॉइंट से जुड़ें और स्ट्रीम हो रहे डेटा को रीयल टाइम में दिखाएँ।

पाठ 2, कुल 4 में से13 चरण

EventSource के साथ React में SSE स्ट्रीम का उपयोग, CoddyKit पर React Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह React Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। React Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

EventSource कनेक्शन बनाना

new EventSource(url) निर्दिष्ट URL से SSE कनेक्शन बनाता है। ब्राउज़र तुरंत Accept: text/event-stream हेडर के साथ HTTP GET अनुरोध खोलता है। सर्वर इस कनेक्शन को खुला रखता है और घटनाओं की धाराएँ भेजता रहता है। EventSource ब्राउज़र में पहले से उपलब्ध API है—मूल उपयोग के लिए किसी लाइब्रेरी की आवश्यकता नहीं होती।

कनेक्शन जीवनचक्र की स्थितियाँ

EventSource की तीन ready states होती हैं: 0 (CONNECTING) — कनेक्शन स्थापित या पुनःस्थापित किया जा रहा है, 1 (OPEN) — कनेक्शन स्थापित है और घटनाएँ प्रवाहित हो रही हैं, 2 (CLOSED) — कनेक्शन बंद है और फिर से कनेक्ट नहीं होगा। वर्तमान स्थिति जानने के लिए eventSource.readyState जाँचें।

सामान्य घटनाओं के लिए onmessage

eventSource.onmessage हैंडलर उन सर्वर घटनाओं के लिए सक्रिय होता है जिनका कोई स्पष्ट इवेंट प्रकार नहीं होता, यानी सर्वर event: फ़ील्ड के बिना data: ... भेजता है। हैंडलर को एक इवेंट ऑब्जेक्ट मिलता है, जिसमें event.data स्ट्रिंग के रूप में डेटा होता है। सर्वर आमतौर पर डेटा पर JSON.stringify का उपयोग करता है, इसलिए प्राप्त होने पर आप उसे JSON.parse कर सकते हैं।

नाम वाली कस्टम घटनाएँ

सर्वर नाम वाली घटनाएँ भेज सकता है: event: userJoined data: {"userId": "123"} । ब्राउज़र में eventSource.addEventListener('userJoined', handler) के साथ सुनें। इससे एक ही SSE कनेक्शन पर कई इवेंट प्रकारों को मल्टीप्लेक्स किया जा सकता है—हर इवेंट प्रकार का अपना हैंडलर होता है, जिससे कोड साफ़ और व्यवस्थित रहता है।

event.data को पार्स करना

SSE डेटा स्ट्रिंग के रूप में आता है। संरचित डेटा के लिए सर्वर JSON.stringify(payload) भेजता है और क्लाइंट उसे इस प्रकार पार्स करता है: const data = JSON.parse(event.data)। सर्वर से मिले गलत JSON को सहजता से सँभालने के लिए JSON.parse को हमेशा try/catch में रखें, त्रुटि की लॉगिंग करें और गलत इवेंट को छोड़ दें।

EventSource जीवनचक्र के लिए useEffect

useEffect के अंदर EventSource बनाएँ और बंद करें: कॉम्पोनेंट माउंट होने पर कनेक्शन बनाएँ, इवेंट हैंडलर जोड़ें और एक क्लीनअप फ़ंक्शन लौटाएँ जो eventSource.close() को कॉल करे। क्लीनअप के बिना कॉम्पोनेंट अनमाउंट होने, उपयोगकर्ता के दूसरे पृष्ठ पर जाने या अलग निर्भरताओं के साथ इफ़ेक्ट के दोबारा चलने पर कनेक्शन लीक हो जाता है।

संदेश मिलने पर स्थिति अपडेट करना

eventSource.onmessage हैंडलर के अंदर नया डेटा दिखाने के लिए React की स्थिति अपडेट करें: setMessages(prev => [...prev, JSON.parse(event.data)])। पुरानी क्लोज़र समस्या से बचने के लिए setState के फ़ंक्शनल रूप का उपयोग करें—इवेंट हैंडलर शुरुआती स्थिति मान को पकड़ लेता है, जबकि फ़ंक्शनल अपडेट यह सुनिश्चित करता है कि आप हमेशा नवीनतम स्थिति में बदलाव करें।

स्वचालित पुनःकनेक्शन

नेटवर्क त्रुटि या सर्वर के पुनःआरंभ होने के कारण कनेक्शन टूटने पर EventSource अपने-आप पुनःकनेक्ट हो जाता है। ब्राउज़र थोड़ी देर प्रतीक्षा करता है (आमतौर पर 3 सेकंड; स्ट्रीम में retry: 3000 के माध्यम से सर्वर द्वारा इसे विन्यस्त किया जा सकता है), फिर पुनःकनेक्ट करता है। आपको पुनःकनेक्शन तर्क लागू करने की आवश्यकता नहीं है — यह EventSource API में पहले से मौजूद है।

अंतिम-घटना-ID शीर्षलेख

EventSource प्राप्त हुई अंतिम घटना की ID को ट्रैक करता है (सर्वर इसे स्ट्रीम में id: 123 के माध्यम से सेट करता है)। पुनःकनेक्ट करते समय ब्राउज़र इस ID को Last-Event-ID HTTP शीर्षलेख में अपने-आप भेजता है। अच्छी तरह डिज़ाइन किया गया सर्वर इसका उपयोग छूटी हुई घटनाओं को फिर से भेजने के लिए करता है, ताकि पुनःकनेक्शन के दौरान कोई घटना न छूटे।

प्रमाण-पत्र और शीर्षलेख भेजना

EventSource सीधे कस्टम शीर्षलेखों का समर्थन नहीं करता। प्रमाणीकरण के लिए कुकीज़ का उपयोग करें (new EventSource(url, { withCredentials: true }) कुकीज़ भेजता है) या प्रमाणीकरण टोकन को URL क्वेरी पैरामीटर के रूप में शामिल करें। यदि आपको प्राधिकरण शीर्षलेखों की आवश्यकता है, तो SSE प्रतिक्रिया को मैन्युअल रूप से संसाधित करने के लिए EventSource के बजाय Fetch API के साथ ReadableStream का उपयोग करें।

कनेक्शन त्रुटि प्रबंधन

जब EventSource को कोई त्रुटि मिलती है, तो onerror हैंडलर सक्रिय हो जाता है। readyState CONNECTING होगा (यदि पुनःप्रयास किया जाएगा) या CLOSED होगा (यदि नहीं किया जाएगा)। onerror में readyState जाँचकर अस्थायी नेटवर्क त्रुटि (जिस पर अपने-आप पुनःप्रयास होगा) और स्थायी विफलता (सर्वर ने 200 के अलावा कोई स्थिति लौटाई) के बीच अंतर करें। स्थायी त्रुटियों के लिए कनेक्शन बंद करें और उपयोगकर्ता को सूचित करें।

EventSource का स्वचालित पुनःकनेक्शन

नेटवर्क त्रुटि के कारण EventSource कनेक्शन टूट जाने पर क्या होता है?

पाठ पुनरावलोकन: React में EventSource

new EventSource(url) से readyStates: CONNECTING, OPEN, CLOSED वाला SSE कनेक्शन बनता है। onmessage सामान्य घटनाओं को संभालता है; addEventListener नामित घटना प्रकारों को संभालता है। JSON.parse(event.data) संरचित पेलोड निकालता है। useEffect में EventSource बनाएँ और उसकी सफ़ाई करें। स्वचालित पुनःकनेक्शन अंतर्निहित है — EventSource नेटवर्क त्रुटियों के बाद छूटी हुई घटनाओं को फिर से भेजने के लिए Last-Event-ID के साथ पुनःप्रयास करता है। कुकीज़ (withCredentials) या URL क्वेरी पैरामीटर के माध्यम से प्रमाणीकरण करें।

शुरुआत निःशुल्क

एआई शिक्षक के साथ React सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
88
पाठ
324

अक्सर पूछे जाने वाले प्रश्न

क्या “EventSource के साथ React में SSE स्ट्रीम का उपयोग” पाठ निःशुल्क है?

हाँ—“EventSource के साथ React में SSE स्ट्रीम का उपयोग” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और React Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। React Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“EventSource के साथ React में SSE स्ट्रीम का उपयोग” में मैं क्या सीखूँगा?

useEffect में EventSource के साथ SSE एंडपॉइंट से जुड़ें और स्ट्रीम हो रहे डेटा को रीयल टाइम में दिखाएँ। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ React Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या React Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर React Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“EventSource के साथ React में SSE स्ट्रीम का उपयोग” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस React Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर React Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. SSE बनाम WebSockets बनाम Polling तुलना
  2. EventSource के साथ React में SSE स्ट्रीम का उपयोग
  3. लॉन्ग पोलिंग पैटर्न और पुनःकनेक्शन तर्क
  4. रीयल-टाइम सूचना फ़ीड बनाना
← React Academy पर वापस जाएँ