सर्वर-सेंट इवेंट क्या हैं? ईवेंटसोर्स और HTTP स्ट्रीमिंग
स्क्रैपलेस स्क्रैपिंग ब्राउज़र HTTP-डिलीवर्ड वेब इंटरफेस का अवलोकन और स्वचालन करने के लिए प्रबंधित ब्राउज़र सत्र प्रदान करता है, जिसमें पृष्ठों द्वारा प्रकट किए गए स्ट्रीमिंग उत्तर शामिल हैं।
TL;DR
- SSE HTTP स्ट्रीमिंग है। सर्वर Content-Type टेक्स्ट/इवेंट-स्ट्रीम के साथ प्रतिक्रिया करता है और प्रतिक्रिया को खुला रखता है।
- ब्राउज़र API ईवेंटसोर्स है। यह घटनाओं का विश्लेषण करता है और ओपन, संदेश, और त्रुटि कॉलबैक को उजागर करता है।
- डिलीवरी सर्वर से क्लाइंट तक है। क्लाइंट कमांड सामान्य HTTP अनुरोधों का उपयोग करते हैं।
- घटनाएँ आईडी और नाम ले जा सकती हैं। Last-Event-ID एप्लिकेशन पुनरारंभ का समर्थन करता है।
- SSE पेलोड UTF-8 टेक्स्ट हैं। बाइनरी डेटा को टेक्स्ट एन्कोडिंग या किसी अन्य परिवहन की आवश्यकता होती है।
परिचय
सर्वर-सेंट इवेंट, जिसे सामान्यतः SSE के रूप में छोटा किया जाता है, एक सर्वर को एक लंबे समय तक चलने वाली HTTP प्रतिक्रिया के माध्यम से UTF-8 टेक्स्ट इवेंट का अनुक्रम वितरित करने की अनुमति देता है। ब्राउज़रों में, ईवेंटसोर्स API स्ट्रीम खोलता है, नामित घटनाओं को वितरित करता है, अंतिम इवेंट आईडी को ट्रैक करता है, और समर्थित परिस्थितियों के तहत संबंध समाप्त होने पर फिर से कनेक्ट करता है।
SSE उस चैनल पर एकतरफा है: सर्वर से क्लाइंट। उपयोगकर्ता क्रियाएँ अभी भी अलग HTTP अनुरोधों के माध्यम से यात्रा करती हैं। यह विभाजन SSE को सूचनाओं, प्रगति, लॉग, लाइव मैट्रिक्स, और उत्पन्न टेक्स्ट के लिए एक अच्छा ताला बनाता है जहां ब्राउज़र ज्यादातर सुनता है।
ईवेंट स्ट्रीम फ़ॉर्मेट
एक SSE प्रतिक्रिया मीडिया प्रकार टेक्स्ट/इवेंट-स्ट्रीम का उपयोग करती है। बॉडी डेटा, इवेंट नाम, पहचानकर्ताओं, और पुन:कनेक्ट-डिले हिंट के लिए पंक्तियाँ रखती है, जिसमें एक खाली रेखा एक घटना को समाप्त करती है। एक वितरित संदेश के लिए कई डेटा पंक्तियाँ जोड़ी जाती हैं। कोलन से शुरू होने वाली पंक्तियाँ टिप्पणियाँ हैं और दिल की धड़कन के रूप में कार्य कर सकती हैं।
यह HTML मानक सर्वर-सेंट इवेंट्स को परिभाषित करता है, जिसमें पार्सिंग, डिस्पैच, पुन:कनेक्ट, और Last-Event-ID व्यवहार शामिल हैं। प्रारूप जानबूझकर इतना सरल है कि इसे कई सर्वर ढांचों से उत्पन्न किया जा सके।
ईवेंटसोर्स कैसे व्यवहार करता है
एक ब्राउज़र URL के साथ ईवेंटसोर्स का निर्माण करता है और ओपन, संदेश, और त्रुटि घटनाएँ प्राप्त करता है। नामित SSE इवेंट addEventListener के माध्यम से वितरित होते हैं, जबकि अनाम इवेंट संदेश हैंडलर का उपयोग करते हैं। कनेक्शन एक HTTP फेच रहता है जिसमें ब्राउज़र क्रेडेंशियल और मूल नियम होते हैं।
यह ईवेंटसोर्स API संदर्भ readyState, close, withCredentials, और इवेंट हैंडलिंग को दस्तावेज करता है। नेटिव ईवेंटसोर्स fetch के समान कस्टम अनुरोध-हेडर लचीलापन नहीं उजागर करता है, इसलिए प्रमाणीकरण डिज़ाइन अक्सर कुकीज़, छोटी उम्र के URLs, या fetch-आधारित स्ट्रीम पार्सर का उपयोग करता है।
इवेंट आईडी और पुनरारंभ
जब एक सर्वर एक आईडी फ़ील्ड भेजता है, तो ब्राउज़र इसे अंतिम इवेंट आईडी के रूप में संग्रहीत करता है। एक कनेक्शन ब्रेक के बाद, एक अगला अनुरोध Last-Event-ID शामिल कर सकता है ताकि सर्वर को पता चले कि क्लाइंट कहाँ रुका।
सर्वर को इसे वास्तविक पुनर्प्राप्ति प्रदान करने के लिए घटनाओं को बनाए रखना या फिर से बनाना चाहिए। यदि स्ट्रीम केवल वर्तमान मानों को उत्सर्जित करती है, तो एक पुरानी आईडी के पास दोबारा चलाने के लिए कुछ नहीं होता। परिभाषित करें कि क्या आईडी वैश्विक रूप से क्रमबद्ध हैं, किसी उपयोगकर्ता या विषय के लिए सीमित हैं, और कार्यान्वयन में मान्य हैं। जब संग्रहीत इतिहास अनुरोधित स्थिति को कवर नहीं करता है तो एक स्नैपशॉट भेजें।
बफरिंग और दिल की धड़कन
एक मान्य स्ट्रीम तब भी टूटने का अनुभव कर सकती है जब एक एप्लिकेशन सर्वर, प्रॉक्सी, संपीड़न स्तर, या गेटवे आउटपुट को इवेंट को फ्लश करने के बजाय बफर करता है। स्ट्रीमिंग के लिए मार्ग को कॉन्फ़िगर करें, अनुपयुक्त प्रतिक्रिया बफ़रिंग को अक्षम करें, और इवेंट सीमाओं को तुरंत लिखें।
टिप्पणी पंक्तियाँ निष्क्रिय पथों को सक्रिय रख सकती हैं बिना अनुप्रयोगीय घटनाएँ बनाए। दिल की धड़कन की आवृत्ति बुनियादी समय सीमा का पालन करनी चाहिए न कि मनमाने उच्च दर। HTTP अर्थशास्त्र और मध्यस्थ अभी भी लागू होते हैं; RFC 9110 चारों ओर प्रतिक्रिया नियम प्रदान करता है।
सुरक्षा और संसाधन सीमाएं
SSE अंत बिंदु लंबे समय तक निजी अपडेट उजागर कर सकते हैं। अनुरोध को प्रमाणित करें, उसके विषयों को अधिकृत करें, मूल और क्रेडेंशियल नीति लागू करें, पहचान के हिसाब से कनेक्शनों को सीमित करें, और उपयोगकर्ता इनपुट को किसी भी आकस्मिक आंतरिक चैनलों का चयन करने से रोकें।
लोगों में URLs प्रकट होने के कारण क्वेरी स्ट्रिंग में स्थायी क्रेडेंशियल रखने से बचें। जब प्रमाणीकरण समाप्त होता है तो स्ट्रीम को बंद करें, और सुनिश्चित करें कि साझा कैश कभी भी उपयोगकर्ता-विशिष्ट प्रतिक्रियाओं को मिक्स नहीं करते। ब्राउज़र में इवेंट डेटा को अविश्वसनीय इनपुट के रूप में मानें; एक विश्वसनीय स्रोत से टेक्स्ट प्राप्त करना HTML सम्मिलन को सुरक्षित नहीं बनाता।
एकतरफा डिलीवरी का स्केलिंग
प्रत्येक जुड़े क्लाइंट एक प्रतिक्रिया स्ट्रीम और कुछ सर्वर स्थिति का उपभोग करता है। इवेंट उत्पादन किसी भी एप्लिकेशन नोड पर हो सकता है, इसलिए बहु-उद्घाटन सिस्टम को एक ब्रोकर या साझा लॉग की आवश्यकता होती है जो प्रत्येक कनेक्शन को धारण करने वाले नोड को इवेंट्स को रूट कर सके।
बैकप्रेशर अब भी मायने रखता है। यदि एक क्लाइंट धीमी गति से पढ़ता है, तो लंबित बफर को सीमित करें, स्थानापन्न स्थिति को एकत्र करें, या एक प्रलेखित नीति के तहत स्ट्रीम को बंद करें। SSE की सरलता प्रोटोकॉल के काम को कम करती है, लेकिन यह कनेक्शनों, इवेंट की दर, और पुनःplay संग्रहण के लिए क्षमता नियोजन को समाप्त नहीं करती।
| क्षेत्र | अर्थ | संचालन नोट |
|---|---|---|
| डेटा | पेलोड टेक्स्ट | एकाधिक पंक्तियाँ नई पंक्तियों के साथ जुड़ती हैं |
| घटना | नामित इवेंट प्रकार | addEventListener के साथ डिस्पैच करें |
| आईडी | कर्सर फिर से शुरू करें | अंतिम-इवेंट-आईडी के रूप में लौटाया गया |
| विलंब संकेत | ब्राउज़र पुनः कनेक्शन समय | स्वरूप मीलसेकंड में मान व्यक्त करता है |
| टिप्पणी | कोलन से शुरू होने वाली पंक्ति | हार्टबीट के रूप में उपयोगी |
| खाली रेखा | एक इवेंट समाप्त करता है | प्रॉम्प्ट फ्लशिंग दृश्य विलंब से बचता है |
सर्वर-भेजे गए इवेंट क्या हैं? EventSource और HTTP स्ट्रीमिंग मान्यता योजना
SSE HTTP स्ट्रीमिंग है। सर्वर Content-Type text/event-stream के साथ प्रतिक्रिया करता है और प्रतिक्रिया को खुला रखता है। उस दावे को पूर्ण उत्पादन पथ के पार मान्य करें। एक छोटे प्रतिनिधि विनिमय से शुरू करें, ग्राहक और एज पर बातचीत किए गए व्यवहार को रिकॉर्ड करें, और पुष्टि करें कि आवेदन उन क्षेत्रों, फ्रेमों, या घटनाओं को प्राप्त करता है जिसकी वह अपेक्षा करता है उसी गेटवे, प्रॉक्सी, प्रमाण पत्र समाप्ति बिंदु और नेटवर्क नीति के माध्यम से जो वास्तविक ट्रैफ़िक द्वारा उपयोग की जाती है।
पहली डिज़ाइन धारणा को एक विफलता व्यायाम में बदलें: Return text/event-stream। फिर दूसरी धारणा के चारों ओर संसाधन दबाव की जांच करें: मार्ग के लिए प्रॉक्सी बफ़रिंग अक्षम करें। एक सही कार्यान्वयन को दस्तावेज़ित सीमाओं के भीतर विफल होना चाहिए, कनेक्शन और बफर स्थिति को छोड़ देना चाहिए, और एक ऐसा निशान छोड़ देना चाहिए जो परिणाम को समझाए बिना क्रेडेंशियल्स या निजी पेलोड को उजागर किए बिना।
AI प्रतिक्रिया टोकन और नौकरी प्रगति डिज़ाइन के विभिन्न भागों का व्यायाम करते हैं, इसलिए संगतता परीक्षण में दोनों ट्रैफ़िक आकार शामिल होने चाहिए जहां वे प्रासंगिक हैं। एक वर्तमान ब्राउज़र, एक गैर-ब्राउज़र क्लाइंट, एक धीमा नेटवर्क पथ, और सबसे पुराना समर्थित मध्यस्थ जोड़ें। संस्करण चयन, कनेक्शन जीवनकाल, संदेश या प्रतिक्रिया आयु, कतार गहराई, और पसंदीदा मार्ग और इसके फॉलबैक के लिए समापन कारण को रिकॉर्ड करें।
परीक्षण के दौरान अर्थ और परिवहन को अलग परतों के रूप में समीक्षा करें। एक सफल कनेक्शन यह साबित नहीं करता है कि आवेदन ने क्रम, अधिकृत, रद्द करना, कैशिंग, पुनः खेलना, या स्थिति वसूली को सही ढंग से संभाला। इसी तरह, एक आवेदन त्रुटि यह साबित नहीं करती कि बातचीत की गई प्रोटोकॉल विफल हो गई। अवलोकनों को संसाधन, उपयोगकर्ता दायरा, तार्किक संचालन, और कनेक्शन पहचानकर्ता के साथ टैग करें, फिर तुलना करें कि प्रत्येक अंत बिंदु ने क्या हुआ ऐसा विश्वास किया। यह अलगाव क्षमता कार्य को अधिक उपयोगी बनाता है: टीमें देख सकती हैं कि क्या विलंब कनेक्शन सेटअप, नेटवर्क वितरण, कतार, आवेदन प्रसंस्करण, सीरियलाइज़ेशन, या धीमे रिसीवर से आया। नियमित दूरदर्शन में निजी सामग्री को बाहर रखें जबकि निर्णय को पुन: उत्पन्न करने के लिए पर्याप्त समय और परिणाम डेटा बनाए रखते हुए।
जहां सर्वर-भेजे गए इवेंट क्या हैं? EventSource और HTTP स्ट्रीमिंग व्यावहारिकता में प्रकट होते हैं
AI प्रतिक्रिया टोकन
एक सर्वर उत्पन्न पाठ को स्ट्रीम करता है जबकि आदेश सामान्य अनुरोध रहते हैं।
कार्य प्रगति
श्रमिक सुनने वाली स्थिति पृष्ठ पर चरण परिवर्तनों को प्रकाशित करते हैं।
ऑपरेशनल लॉग
एक डैशबोर्ड प्राधिकृत टेक्स्ट इवेंट्स को फिर से शुरू करने योग्य आईडी के साथ ट्रेल करता है।
सूचनाएँ
सर्वर खाते के इवेंट्स प्रदान करता है जिन्हें बार-बार क्लाइंट संदेशों की आवश्यकता नहीं होती है।
सर्वर-भेजे गए इवेंट क्या हैं? EventSource और HTTP स्ट्रीमिंग उत्पादन चेकलिस्ट
- Return text/event-stream। इस बिंदु को एक लिखित स्वीकृति परीक्षण में परिवर्तित करें ताकि समीक्षक इरादे के व्यवहार को आकस्मिक कार्यान्वयन विवरण से अलग कर सकें।
- मार्ग के लिए प्रॉक्सी बफ़रिंग अक्षम करें। सेटिंग के मालिक घटक का नाम दें और उस व्यक्ति या टीम का नाम दें जो इसकी अवलोकनीय व्यवहार में बदलाव पर प्रतिक्रिया देती है।
- पूर्ण इवेंट सीमाओं के बाद फ्लश करें। लॉग या ट्रेस में प्रासंगिक संकेत को कैद करें, फिर सत्यापित करें कि संकेत वास्तविक पथ में हर प्रॉक्सी, गेटवे, और सेवा सीमा को सहन करता है।
- पुनः खेलना महत्वपूर्ण होने पर स्थिर इवेंट आईडी असाइन करें। निर्णय का परीक्षण करें जिससे सामान्य मामला, धीमा साथी, बंद कनेक्शन, अत्यधिक इनपुट, और संस्करण या क्षमता असंगति उत्पन्न हो।
- रखरखाव और स्नैपशॉट फॉलबैक को परिभाषित करें। सुरक्षित डिफ़ॉल्ट और सटीक स्थिति को दस्तावेजीकृत करें जो एक अपवाद की अनुमति देती है; छिपे हुए अपवाद बाद के परिवर्तनों के दौरान आपसी समस्याएं बन जाते हैं।
- अवकाश पथों के लिए आवश्यकतानुसार केवल टिप्पणियाँ भेजें। इस व्यवहार की जांच एक प्रतिनिधि ब्राउज़र या क्लाइंट से करें बजाय इसके कि केवल एक स्थानीय इकाई परीक्षण या सर्वर-साइड कॉन्फ़िगरेशन स्क्रीन पर भरोसा करें।
- प्रत्येक स्ट्रीम को प्रमाणित और अधिकृत करें। एक सीमित संसाधन सीमा निर्धारित करें और परिणामस्वरूप अस्वीकृति को दोनों ऑपरेटरों और कॉल करने वाले आवेदन के लिए दृश्यमान बनाएं।
- निजी इवेंट्स के साझा-कैश स्टोरेज को रोकें। एक तार्किक विनिमय को ग्राहक, एज, आवेदन, और किसी भी असिंक्रोनस श्रमिक के बीच सहसंबंधित करने के लिए पर्याप्त पहचानकर्ताओं को बनाए रखें।
- बाउंड धीमे-क्लाइंट कतारें। कनेक्शन की संख्या, पेलोड के आकार, और संदेश की आवृत्ति सही डिज़ाइन को बदल सकती है, इसलिए ट्रैफ़िक-आकार परिवर्तन के बाद विकल्प की समीक्षा करें।
- खुले कनेक्शनों, घटना विलंब, और डिस्कनेक्ट के कारणों को मापें। फॉलबैक पथ को देखने योग्य और परीक्षणित रखें ताकि संगतता पुराने पथ पर निर्भर न हो जो चुपचाप काम करना बंद कर दिया है।
निष्कर्ष
SSE HTTP स्ट्रीमिंग है। सर्वर Content-Type text/event-stream के साथ उत्तर देता है और उत्तर को खुला रखता है। SSE पेलोड UTF-8 पाठ होते हैं। बाइनरी डेटा को पाठ एन्कोडिंग या किसी अन्य परिवहन की आवश्यकता होती है। उन दो तथ्यों को स्पष्ट सीमाओं, देखने योग्य स्थिति, और एक फॉलबैक के साथ लागू करें जो प्रतिनिधिक क्लाइंट द्वारा परीक्षणित हो न कि कॉन्फ़िगरेशन से सुपुर्द किया गया हो।
क्या आप विश्वसनीय वेब डेटा कार्यप्रवाह को बनाने के लिए तैयार हैं?
Scrapeless के साथ प्रोटोकॉल निर्णयों को देखने योग्य ब्राउज़र और API कार्यप्रवाहों में बदलें।
आज साइन अप करें और प्राप्त करें $5 का मुफ्त क्रेडिट — कोई क्रेडिट कार्ड शुल्क नहीं.
आपका $5 क्रेडिट प्राप्त करें →पूछे जाने वाले प्रश्न
क्या सर्वर द्वारा भेजे गए घटनाएँ द्विदिशात्मक हैं?
नहीं। SSE घटनाओं को सर्वर से ग्राहक तक ले जाता है; ग्राहक अलग HTTP अनुरोधों के माध्यम से कमांड भेजता है।
क्या सर्वर द्वारा भेजे गए घटनाएँ स्वचालित रूप से पुनः कनेक्ट होती हैं?
ब्राउज़र EventSource API निर्धारित शर्तों के तहत पुनः कनेक्ट होता है, लेकिन सर्वर को घटना आईडी का समर्थन करना चाहिए और यदि डेटा छूट जाता है तो पुनरावृत्ति की जानी चाहिए।
क्या SSE बाइनरी डेटा भेज सकता है?
SSE एक UTF-8 पाठ प्रारूप है। बाइनरी सामग्री को पाठ के रूप में एन्कोड किया जाना चाहिए या किसी अन्य तंत्र के माध्यम से भेजा जाना चाहिए।
क्या SSE HTTP/2 पर काम करता है?
हाँ। SSE एक HTTP उत्तर प्रारूप है और इसे HTTP/2 के माध्यम से ले जाया जा सकता है जब ग्राहक, सर्वर, और मध्यस्थ इसे समर्थन करते हैं।
SSE घटनाएँ बैचों में क्यों आती हैं?
एक प्रॉक्सी, सर्वर रूपरेखा, संपीड़न परत, या एप्लिकेशन बफर आउटपुट को पकड़ सकता है; स्ट्रीमिंग रूट्स को तात्कालिक फ्लशिंग और संगत मध्यस्थ सेटिंग्स की आवश्यकता होती है।