परिचय: WebSocket वास्तविक समय संचार का मानक क्यों बन गया
\nआधुनिक वेब अनुप्रयोगों को घटनाओं पर तत्काल प्रतिक्रिया की आवश्यकता होती है। चाहे वह चैट हो, स्टॉक टर्मिनल हो या मल्टीप्लेयर गेम - उपयोगकर्ता उम्मीद करते हैं कि पेज को रीलोड किए बिना डेटा अपडेट हो जाए। पारंपरिक HTTP (REST API) अपने "अनुरोध-प्रतिक्रिया" मॉडल के साथ ऐसे कार्यों के लिए अक्षम है: क्लाइंट को लगातार सर्वर से पूछताछ (polling) करनी पड़ती है, जिससे अतिरिक्त लोड और विलंब होता है।
\nइस समस्या का समाधान प्रोटोकॉल WebSocket है, जो क्लाइंट और सर्वर के बीच एक स्थायी द्विदिश कनेक्शन स्थापित करता है। इस लेख में, हम Java पर WebSocket को मूल बातों से लेकर एक पूर्ण वास्तविक समय अनुप्रयोग बनाने तक समझेंगे। आप सीखेंगे कि सर्वर कैसे सेट करें, क्लाइंट कैसे लिखें और त्रुटियों को कैसे संभालें।
\n\nWebSocket की मूल बातें: यह कैसे काम करता है
\nHTTP से अंतर
\nWebSocket एक प्रोटोकॉल है जो TCP के ऊपर काम करता है। यह HTTP अनुरोध (हैंडशेक) के रूप में शुरू होता है, जिसके बाद कनेक्शन एक स्थायी द्विदिश चैनल में "अपग्रेड" (upgrade) हो जाता है। HTTP के विपरीत, जहां प्रत्येक अनुरोध के लिए एक नए कनेक्शन की आवश्यकता होती है, WebSocket इसे खुला रखता है, जिससे सर्वर स्वतंत्र रूप से क्लाइंट को डेटा भेज सकता है (push-मॉडल)।
\nमुख्य लाभ:
\n- \n
- कम विलंबता — बार-बार हैंडशेक के बिना डेटा तुरंत स्थानांतरित होता है। \n
- कम ट्रैफ़िक — HTTP में सैकड़ों बाइट्स के मुकाबले न्यूनतम हेडर (केवल 2-14 बाइट्स)। \n
- द्विदिशता — क्लाइंट और सर्वर दोनों डेटा भेजना शुरू कर सकते हैं। \n
Java पर वास्तविक समय अनुप्रयोग की आर्किटेक्चर
\nएक विशिष्ट अनुप्रयोग में तीन घटक होते हैं:
\n- \n
- क्लाइंट (ब्राउज़र या मोबाइल ऐप), जो कनेक्शन शुरू करता है। \n
- एप्लिकेशन सर्वर (Java), जो WebSocket सत्रों का प्रबंधन करता है। \n
- बैकएंड (डेटाबेस, मैसेज क्यू), जो बिज़नेस लॉजिक को संभालता है। \n
Java WebSocket के साथ काम करने के लिए शक्तिशाली उपकरण प्रदान करता है - सर्वर साइड (Jakarta WebSocket, Spring WebSocket) और क्लाइंट साइड (मानक Java WebSocket API) दोनों पर।
\n\nJava पर WebSocket सर्वर बनाना
\nपर्यावरण तैयार करना
\nसर्वर साइड के लिए हम Jakarta WebSocket (पहले Java EE WebSocket) का उपयोग करेंगे। यह एक मानक API है जो Jakarta EE का हिस्सा है। आपको आवश्यकता होगी:
\n- \n
- JDK 11 या उच्चतर। \n
- एप्लिकेशन सर्वर (उदाहरण के लिए, Apache Tomcat 10 या GlassFish 7)। \n
- निर्भरता प्रबंधन के लिए Maven। \n
pom.xml में निर्भरता जोड़ें:
<dependency>\n <groupId>jakarta.websocket</groupId>\n <artifactId>jakarta.websocket-api</artifactId>\n <version>2.1.0</version>\n <scope>provided</scope>\n</dependency>\n\nWebSocket एंडपॉइंट लिखना
\nआइए एक सरल इको सर्वर बनाएं जो प्राप्त संदेश को वापस भेजता है:
\nimport jakarta.websocket.*;\nimport jakarta.websocket.server.ServerEndpoint;\n\n@ServerEndpoint("/chat")\npublic class ChatEndpoint {\n\n @OnOpen\n public void onOpen(Session session) {\n System.out.println("नया कनेक्शन: " + session.getId());\n }\n\n @OnMessage\n public String onMessage(String message, Session session) {\n System.out.println("से प्राप्त " + session.getId() + ": " + message);\n return "इको: " + message;\n }\n\n @OnClose\n public void onClose(Session session, CloseReason reason) {\n System.out.println("कनेक्शन बंद: " + session.getId() \n + " कारण: " + reason.getReasonPhrase());\n }\n\n @OnError\n public void onError(Session session, Throwable error) {\n System.err.println("सत्र में त्रुटि " + session.getId() + ": " + error.getMessage());\n }\n}\nएनोटेशन @ServerEndpoint("/chat")
ब्लॉग
पुस्तक अनुशंसाएँ
यह भी पढ़ें