परिचय: क्यों WebSocket Java में real-time अनुप्रयोगों के लिए मानक है
आधुनिक वेब अनुप्रयोगों को क्लाइंट और सर्वर के बीच तत्काल डेटा आदान-प्रदान की आवश्यकता होती है। पारंपरिक HTTP प्रोटोकॉल, जो 'अनुरोध-प्रतिक्रिया' मॉडल पर आधारित है, उन कार्यों के लिए उपयुक्त नहीं है जहाँ न्यूनतम विलंबता महत्वपूर्ण है: ऑनलाइन चैट, स्टॉक कोट्स, मल्टीप्लेयर गेम या रीयल-टाइम मॉनिटरिंग डैशबोर्ड।
WebSocket प्रोटोकॉल इस समस्या को क्लाइंट और सर्वर के बीच एक स्थायी द्विदिश कनेक्शन स्थापित करके हल करता है। प्रारंभिक HTTP हैंडशेक के बाद, कनेक्शन WebSocket में 'अपग्रेड' हो जाता है, और डेटा अतिरिक्त हेडर के बिना फ्रेम के रूप में प्रेषित होता है। Java, अपनी शक्तिशाली मानक लाइब्रेरी और फ्रेमवर्क के कारण, WebSocket के साथ काम करने के लिए उत्कृष्ट उपकरण प्रदान करता है।
इस लेख में, हम देखेंगे कि Jakarta WebSocket API (पूर्व में Java EE WebSocket) का उपयोग करके Java में एक पूर्ण real-time एप्लिकेशन कैसे बनाया जाए। आप सर्वर सेटअप, संदेश प्रसंस्करण, सत्र प्रबंधन और विशिष्ट आर्किटेक्चरल समाधानों के बारे में जानेंगे।
Java में WebSocket के साथ काम करने की मूल बातें: Jakarta WebSocket API
Java EE 7 (Jakarta EE) से शुरू करके, मानक प्लेटफ़ॉर्म में JSR 356 जोड़ा गया था - WebSocket के लिए Java API। इसका मतलब है कि WebSocket सर्वर बनाने के लिए तृतीय-पक्ष लाइब्रेरीज़ को शामिल करने की आवश्यकता नहीं है - यह एक सर्वलेट कंटेनर होना पर्याप्त है जो Jakarta EE का समर्थन करता है (उदाहरण के लिए, Apache Tomcat 9+, Jetty 10+, WildFly)।
WebSocket एंडपॉइंट बनाना
मुख्य तत्व एक एंडपॉइंट क्लास है, जिसे @ServerEndpoint के साथ एनोटेट किया गया है। इसके अंदर, हम उन विधियों को परिभाषित करते हैं जो कनेक्ट होने, संदेश प्राप्त करने, त्रुटि या कनेक्शन बंद होने पर कॉल की जाएंगी।
import jakarta.websocket.*;import jakarta.websocket.server.ServerEndpoint;import java.io.IOException;import java.util.Set;import java.util.concurrent.CopyOnWriteArraySet;
@ServerEndpoint("/chat")public class ChatEndpoint {
private static final Set<Session> sessions = new CopyOnWriteArraySet<>();
@OnOpen public void onOpen(Session session) { sessions.add(session); broadcast("उपयोगकर्ता कनेक्ट हुआ। कुल: " + sessions.size()); }
@OnMessage public void onMessage(String message, Session session) { broadcast("[" + session.getId() + "]: " + message); }
@OnClose public void onClose(Session session) { sessions.remove(session); broadcast("उपयोगकर्ता डिस्कनेक्ट हो गया। बचे: " + sessions.size()); }
@OnError public void onError(Session session, Throwable throwable) { System.err.println("सत्र में त्रुटि " + session.getId() + ": " + throwable.getMessage()); }
private void broadcast(String message) { for (Session s : sessions) { if (s.isOpen()) { try { s.getBasicRemote().sendText(message); } catch (IOException e) { e.printStackTrace(); } } } }}इस उदाहरण में:
@ServerEndpoint("/chat")— इंगित करता है कि एंडपॉइंट सापेक्ष पथ/chatपर उपलब्ध है।CopyOnWriteArraySet— सक्रिय सत्रों को संग्रहीत करने के लिए एक थ्रेड-सेफ कलेक्शन।@OnOpen— कनेक्शन स्थापित होने पर कॉल किया जाता है।@OnMessage— टेक्स्ट संदेश प्राप्त होने पर कॉल किया जाता है।@OnClose— कनेक्शन बंद होने पर कॉल किया जाता है।@OnError— त्रुटि प्रबंधन।
क्लाइंट JavaScript
सर्वर का परीक्षण करने के लिए, JavaScript के साथ एक सरल HTML फ़ाइल पर्याप्त है:
<!DOCTYPE html><html><head> <title>WebSocket Chat</title></head><body> <div id="messages"></div> <input type="text" i
```