WebSocket प्रोटोकॉल ( WS ) एक ब्राउज़र और एक सर्वर के बीच लगातार कनेक्शन पर डेटा का आदान-प्रदान करने की क्षमता प्रदान करता है। कनेक्शन और अतिरिक्त HTTP अनुरोधों को तोड़े बिना "पैकेट" के रूप में दोनों दिशाओं में इसके माध्यम से डेटा प्रसारित किया जाता है।
वेबसाकेट निरंतर संचार सेवाओं के लिए अच्छा है, जैसे चैट रूम, ऑनलाइन गेम, रीयल-टाइम मार्केटप्लेस इत्यादि।
उदाहरण के तौर पर, आइए एक साधारण चैट के लिए एक बैकएंड बनाएं। बुनियादी सुविधाएँ प्रदान करना आवश्यक है:
- चैट करने के लिए संदेश भेजा जा रहा है।
- संदेश के लेखकत्व का निर्धारण।
- कार्रवाई सूचनाएं। उदाहरण के लिए, एक नया सदस्य चैट में शामिल हो रहा है, चैट छोड़ रहा है, टाइपिंग इंडिकेटर (कोई टाइप कर रहा है ...)
डेटाबेस मॉडल
आइए डेटाबेस के लिए एक मॉडल बनाकर शुरू करें। भले ही हम शुरू में डेटाबेस में संदेशों और पत्राचार के इतिहास को संग्रहीत करने की योजना नहीं बनाते हैं, फिर भी हमें संदेश और सूचनाएं भेजने की संरचना के लिए एक मॉडल की आवश्यकता होती है।
चलिए एक सामान्य chat_event मॉडल बनाते हैं जिसमें ये शामिल हैं:
- उपयोगकर्ता के साथ संबंध। किसी भी संदेश में यह जानकारी शामिल होती है कि वह किस उपयोगकर्ता को संदर्भित करता है।
- 4 संभावित विकल्पों के साथ Type (enum) करें। Connected और Disconnected - अधिसूचना के लिए जब कोई उपयोगकर्ता कनेक्ट या डिस्कनेक्ट हो जाता है। Typing - यह जानकारी देने के लिए कि उपयोगकर्ता वर्तमान में एक नया संदेश लिख रहा है। Message - एक मानक पाठ संदेश के लिए।
- Message (text) - संदेश का पाठ।
समापन बिंदु विन्यास
विकास का अगला कदम मानक दृष्टिकोण से थोड़ा अलग है जो अनुप्रयोग की अन्य विशेषताओं के लिए सामान्य है। आमतौर पर, एक व्यवसाय प्रक्रिया बनाई जाती है, और फिर इसे चलाने के लिए एक समापन बिंदु कॉन्फ़िगर किया जाता है। WebSockets के मामले में, सब कुछ अलग तरीके से होता है, और शुरुआती बिंदु एक समापन बिंदु का निर्माण होता है, जिसके ट्रिगर के आधार पर व्यावसायिक प्रक्रियाएं आगे बनाई जाती हैं।
हमें एक एंडपॉइंट सेक्शन चाहिए। वहां हम उपयुक्त विकल्प - WebSocket Endpoint का चयन करके एक नया समापन बिंदु बनाते हैं।
WebSockets के लिए अनुरोध विधि का कोई विकल्प नहीं है - यह हमेशा GET होता है। आइए एक साधारण URL निर्दिष्ट करें - /chat/ और उसी नाम से इसके लिए एक समूह बनाएं।
अगला, हमें वेरिएबल्स बनाने की जरूरत है जो वेबसॉकेट के भीतर डेटा एक्सचेंज प्रारूप का निर्धारण करेंगे।
- Client-to-Server । मानक व्यावसायिक प्रक्रियाओं के लिए इनकमिंग पैरामीटर के समान। हमारे उदाहरण में, हम एक साधारण पाठ चर संदेश बनाएंगे (हम सर्वर को साधारण पाठ संदेश भेजेंगे)।
- Server-to-Client । यहां सर्वर संदेशों के लिए चर बनाए जाते हैं, सर्वर से उपयोगकर्ता को डेटा भेजते हैं। ध्यान दें कि यह उपयोगकर्ता के अनुरोध की प्रतिक्रिया के समान नहीं है। और यद्यपि इसे उपयोगकर्ता के कार्यों की प्रतिक्रिया के रूप में भेजा जा सकता है, यह अक्सर कुछ बाहरी घटनाओं के कारण होता है। हमारे उदाहरण में, सर्वर चैट में सभी घटनाओं की सूचनाएं भेजेगा, इसलिए हम chat_event मॉडल को एक चर के रूप में सेट करेंगे।
चर बनाने के बाद, आप मुख्य चीज़ पर आगे बढ़ सकते हैं - WebSocket का तर्क बनाना। यह उन ट्रिगर्स पर आधारित है जो वेबसॉकेट पर एक नया संदेश प्राप्त होने के साथ-साथ कनेक्शन स्थापित या डिस्कनेक्ट होने पर सक्रिय होते हैं।
एक व्यवसाय प्रक्रिया बनाना
आइए connect ट्रिगर का उपयोग करें और इसके लिए एक व्यवसाय प्रक्रिया बनाएं। इसे उस समय लॉन्च किया जाएगा जब उपयोगकर्ता WebSocket के साथ एक संबंध स्थापित करता है, और इसका कार्य सभी जुड़े हुए उपयोगकर्ताओं को इसके बारे में एक सूचना भेजना होगा।
ध्यान दें कि स्टार्ट ब्लॉक में दो पैरामीटर शामिल हैं: User ID और Connection ID । इस प्रकार, आप न केवल कनेक्शन स्थापित करने वाले उपयोगकर्ता को तुरंत निर्धारित कर सकते हैं बल्कि इस कनेक्शन के लिए एक अद्वितीय पहचानकर्ता भी प्राप्त कर सकते हैं। भविष्य में, इस पहचानकर्ता का उपयोग, उदाहरण के लिए, लक्षित संदेश भेजने या जबरन कनेक्शन समाप्त करने के लिए किया जा सकता है।
व्यवसाय प्रक्रिया के सभी आवश्यक चरणों का निर्माण करें:
- Make User । उपयोगकर्ता मॉडल बनाने के लिए शुरुआती पैरामीटर User ID का उपयोग करते हैं।
- Make chat_event । एक घटना सूचना मॉडल बनाएँ। हम इसे पिछले चरण में बनाए गए मॉडल का उपयोग करके उपयोगकर्ता से जोड़ेंगे और ईवेंट प्रकार और सेट Type = Connected भी चुनेंगे। हम संदेश पैरामीटर का उपयोग नहीं करते हैं, क्योंकि इस मामले में, यह एक संदेश नहीं है जो प्रेषित होता है बल्कि एक कनेक्शन सूचना है।
- WSS Connections /chat/ । इस ब्लॉक का उपयोग करते हुए, हम सभी सक्रिय WebSocket कनेक्शनों की एक सूची प्राप्त करेंगे।
- For Each Loop । हम कनेक्शन ऐरे का उपयोग लूप पैरामीटर के रूप में करते हैं, प्रत्येक कनेक्टेड उपयोगकर्ता को सूचनाएं भेजते हैं।
- Expand WebSocket Connection । Connection ID प्राप्त करने के लिए कनेक्शन जानकारी का विस्तार करें।
- WSS Send /chat/ । सूचना भेजने के लिए हम Connection ID और उत्पन्न chat_event का उपयोग करते हैं।
WebSockets का परीक्षण करने के लिए डाकिया का उपयोग करना
इस स्तर पर, WebSocket, हालांकि इसमें महत्वपूर्ण कार्यक्षमता नहीं है, पहले से ही चालू है और व्यवहार में इसका परीक्षण किया जा सकता है। ऐसा करने के लिए, आप किसी भी उपकरण का उपयोग कर सकते हैं जो आपको WebSockets के साथ काम करने की अनुमति देता है। आइए एक उदाहरण के रूप में Postman के साथ ऐसा करने का तरीका देखें।
New button क्लिक करना चाहिए और WebSocket Request का चयन करना चाहिए
आपको WebSocket के लिए URL निर्दिष्ट करने की आवश्यकता है। इसे स्वैगर का उपयोग करके पाया जा सकता है, जहां वेबसाकेट सूची में शेष समापन बिंदुओं के साथ है।
मानक अनुरोधों के विपरीत, WebSockets wss प्रोटोकॉल का उपयोग करके संचालित होता है, इसलिए आपको https को wss से बदलने की आवश्यकता है। परिणाम एक समान URL होना चाहिए: wss://qvlxglh-app.apms.io/api/chat/
अगला, आपको अनुरोध के लिए एक प्रमाणीकरण टोकन जोड़ने की आवश्यकता है क्योंकि कनेक्शन गुमनाम नहीं हो सकता। आपको Bearer lBCiunRWg6BfogDrLml4jrC4iJiWucKo जैसे मान के साथ Authorization शीर्षलेख बनाना होगा। lBCiunRWg6BfogDrLml4jrC4iJiWucKo के बजाय, आपको अपना स्वयं का टोकन डालने की आवश्यकता है, जिसे प्राधिकरण ( POST /auth/ endpoint) के परिणामस्वरूप प्राप्त किया जा सकता है।
यदि सब कुछ सही ढंग से किया जाता है, तो Connect बटन पर क्लिक करके, एक कनेक्शन स्थापित हो जाएगा, और सर्वर की ओर से पहला संदेश प्राप्त होगा, भेजने की व्यवसाय प्रक्रिया जो पहले बनाई गई थी।
उसी समय, आप यह सुनिश्चित कर सकते हैं कि सर्वर से संदेश प्राप्त करना न केवल हमारे कुछ अनुरोधों की प्रतिक्रिया के रूप में होता है। अन्य उपयोगकर्ताओं के कार्य उन्हें पैदा कर सकते हैं। इसका परीक्षण करने के लिए, आप किसी अन्य उपयोगकर्ता के प्रमाणीकरण टोकन का उपयोग करके किसी अन्य टैब में कनेक्शन स्थापित कर सकते हैं। इसे सूचित करने वाले सर्वर से एक संदेश सक्रिय कनेक्शन वाले सभी टैब पर भेजा जाएगा।
मैसेजिंग के लिए बिजनेस प्रोसेस
अब आप WebSocket की क्षमताओं को विकसित करना जारी रख सकते हैं और मैसेजिंग के लिए एक व्यावसायिक प्रक्रिया बना सकते हैं। वैसे, आप अभी संदेश भेज सकते हैं, लेकिन पहले तर्क बनाए बिना, इसका कोई मतलब नहीं है, संदेश से कोई प्रतिक्रिया नहीं होगी। इसलिए, समापन बिंदु सेटिंग्स पर वापस जाएं और ट्रिगर receive करने के लिए एक व्यवसाय प्रक्रिया बनाएं।
कई मायनों में, यह पिछली व्यावसायिक प्रक्रिया के समान होगी। जब कोई संदेश प्राप्त होता है, तो chat_event उत्पन्न करना और सभी चैट प्रतिभागियों को इसके बारे में सूचनाएं भेजना आवश्यक होगा। अंतर यह है कि संदेश को स्वयं chat_event में जोड़ने की आवश्यकता होगी, और संदेश के लेखक को मेलिंग सूची में शामिल करने की आवश्यकता नहीं है।
व्यवसाय प्रक्रिया के पहले भाग में उन्हीं ब्लॉकों का उपयोग किया जाता है। Make chat_event ब्लॉक में, आपको type = message सेट करना होगा और संदेश को प्रारंभ ब्लॉक से ही संलग्न करना होगा।
लूप में, हमें (Equal ब्लॉक) की जांच करने और केवल संदेश भेजने की आवश्यकता है यदि रिसीवर की कनेक्शन आईडी प्रेषक की कनेक्शन आईडी से मेल नहीं खाती है ( If-Else = False )।
आप परिणाम प्रकाशित कर सकते हैं और परीक्षण शुरू कर सकते हैं। ध्यान दें कि संदेश स्वयं JSON प्रारूप में है, इसलिए संदेश चर का उपयोग करते समय, यह इस तरह दिखाई देगा:
{"message":"Some text here"}
उदाहरण में, आप देख सकते हैं कि आपको एक चैट कनेक्शन सूचना प्राप्त होती है, अपना स्वयं का संदेश ( Hi! ) भेजें, और एक प्रतिक्रिया प्राप्त करें ( Glad to see you! )
यह WebSockets का उपयोग करके चैट के लिए मूल बैकएंड के निर्माण को पूरा करता है। आप फ्रंट-एंड का निर्माण शुरू कर सकते हैं और अपना स्वयं का रीयल-टाइम मैसेजिंग ऐप विकसित कर सकते हैं।