Java में Server-Sent Events: WebSocket के बिना रीयल-टाइम डेटा कैसे भेजें

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Java में Server-Sent Events: जब WebSocket अत्यधिक हो और HTTP अपर्याप्त

\n\n

क्या आपने कभी सोचा है कि Twitter में समाचार फ़ीड, Telegram में सूचनाएं या खेल मैचों के लाइव परिणाम कैसे काम करते हैं? ऐसा लगता है कि डेटा अपने आप आता है, बिना पेज को रिफ्रेश किए। रहस्य सरल है: Server-Sent Events (SSE) — एक तकनीक जो सर्वर को सामान्य HTTP कनेक्शन के माध्यम से रीयल टाइम में क्लाइंट को डेटा भेजने की अनुमति देती है।

\n\n

इस लेख में हम Java में Server-Sent Events को समझेंगे। आप जानेंगे कि SSE अक्सर WebSocket से अधिक सुविधाजनक क्यों है, Java Servlet API पर सर्वर कैसे सेट करें, और क्लाइंट पर इवेंट कैसे प्राप्त करें। कोड काम करने योग्य होगा, शैली जीवंत होगी, और उदाहरण वास्तविक कार्यों के जितना संभव हो उतना करीब होंगे।

\n\n

Server-Sent Events क्या हैं और इनकी आवश्यकता क्यों है?

\n\n

Server-Sent Events (SSE) एक W3C मानक है जो सर्वर को एक लंबे समय तक चलने वाले HTTP कनेक्शन के माध्यम से क्लाइंट को डेटा "पुश" करने की अनुमति देता है। क्लाइंट इवेंट स्ट्रीम की सदस्यता लेता है, और सर्वर उनके आने पर संदेश भेजता है।

\n\n

SSE इसके लिए आदर्श है:

\n
    \n
  • सूचनाएं — नए ईमेल, संदेश, स्थिति परिवर्तन।
  • \n
  • समाचार फ़ीड — पोस्ट, ट्वीट, मुद्रा दरें।
  • \n
  • निगरानी — लॉग, सर्वर मेट्रिक्स, कार्य प्रगति।
  • \n
  • लाइव डेटा — स्टॉक कोट्स, मैच परिणाम, मौसम।
  • \n
\n\n

WebSocket के विपरीत, SSE केवल एक दिशा में काम करता है (सर्वर → क्लाइंट), लेकिन यह अधिकांश परिदृश्यों के लिए पर्याप्त है। साथ ही, SSE सामान्य HTTP का उपयोग करता है, अतिरिक्त पोर्ट की आवश्यकता नहीं होती है, और आसानी से प्रॉक्सी और फायरवॉल से गुजरता है।

\n\n

Server-Sent Events बनाम WebSocket: क्या चुनें?

\n\n

यदि आपको केवल सर्वर से क्लाइंट को डेटा भेजना है (बिना प्रतिक्रिया के), तो SSE चुनें। यह सरल, हल्का और सस्ता है। WebSocket तब उचित है जब क्लाइंट भी सक्रिय रूप से डेटा भेजता है (जैसे चैट या ऑनलाइन गेम में)।

\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
मानदंडServer-Sent EventsWebSocket
दिशासर्वर → क्लाइंटद्विदिशात्मक
प्रोटोकॉलHTTP/1.1, HTTP/2ws:// या wss://
स्वचालित पुन: कनेक्शनहाँ (ब्राउज़र में निर्मित)नहीं (लागू करना होगा)
कार्यान्वयन जटिलताकममध्यम/उच्च
ब्राउज़र समर्थनसभी आधुनिकसभी आधुनिक
\n\n

शैक्षिक साइट PythonLib के लिए, हमने Java को चुना क्योंकि यह सर्वर-साइड डेवलपमेंट के लिए एक विश्वसनीय भाषा है। चलिए शुरू करते हैं!

\n\n

सर्वर पक्ष: Servlet API के साथ Java पर SSE का कार्यान्वयन

\n\n

सर्वर से शुरू करते हैं। सबसे आसान तरीका मानक Java Servlets का उपयोग करना है। हमें चाहिए:

\n
    \n
  • हेडर सेट करें Content-Type: text/event-stream।
  • \n
  • कैशिंग बंद करें (Cache-Control: no-cache)।
  • \n
  • कनेक्शन को खुला रखें।
  • \n
  • डेटा को data: ...\\n\\n प्रारूप में भेजें।
  • \n
\n\n

उदाहरण 1: Java Servlet पर सरल SSE सर्वर

\n\n

एक सर्वलेट बनाएं जो हर 5 सेकंड में वर्तमान समय भेजता है।

\n\n
import javax.servlet.ServletException;\nimport javax.servlet.annotation.WebServlet;\nimport javax.servlet.http.HttpServlet;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport java.io.IOException;\nimport java.io.PrintWriter;\nimport java.time.LocalTime;\nimport java.util.concurrent.Executors;\nimport java.util.concurrent.ScheduledExecutorServ                

ब्लॉग

पुस्तक अनुशंसाएँ