वेब एप्लिकेशन में नेविगेट करते समय रीयल-टाइम नोटिफिकेशन प्राप्त करना बहुत आम है। सूचनाएं एक चैट बॉट, एक चेतावनी प्रणाली से आ सकती हैं, या किसी ऐसी घटना से ट्रिगर हो सकती हैं जिसे ऐप एक या अधिक उपयोगकर्ताओं को धक्का देता है। सूचनाओं का स्रोत चाहे जो भी हो, डेवलपर्स अधिसूचना सेवाओं को बनाने के लिए रेडिस का तेजी से उपयोग कर रहे हैं।
माइक्रोसर्विस आर्किटेक्चर द्वारा संचालित आधुनिक अनुप्रयोगों में, रेडिस का उपयोग अक्सर एक साधारण कैश और प्राथमिक डेटाबेस के रूप में किया जाता है। लेकिन इसका उपयोग सेवाओं के बीच संचार परत के रूप में भी किया जाता है, जो रेडिस स्ट्रीम द्वारा संचालित एक सतत संदेश परत का उपयोग करता है, जो एक हल्के इवेंट सिस्टम है जो इसके प्रसिद्ध पब/सब (प्रकाशित/सदस्यता लें) कमांड का उपयोग करता है।
इस ब्लॉग पोस्ट में, हम आपको दिखाएंगे कि Vue.js, Node.js और WebSockets के साथ विकसित वेब एप्लिकेशन पर संदेश भेजने के लिए Redis Pub/Sub का उपयोग करके एक छोटी अधिसूचना सेवा बनाना कितना आसान है।
आवश्यकताएं
यह डेमो सेवा उपयोग करती है:
- डॉकर
- Redis 5.0.x या बाद का (यह डेमो Redis Docker कंटेनर का उपयोग करता है)
- नोड पैकेज मैनेजर (एनपीएम) के साथ Node.js 10.x
- नोडेमन, एक सरल टूल जो विकास के दौरान आपके एप्लिकेशन को स्वचालित रूप से पुनरारंभ करता है
- व्यू सीएलआई
Redis सर्वर प्रारंभ करना
यदि आपके पास पहले से कोई रेडिस इंस्टेंस नहीं चल रहा है, तो आप इसे डॉकर का उपयोग करके शुरू कर सकते हैं; एक टर्मिनल में, यह कमांड चलाएँ:
> docker run -it --rm --name redis-server -p 6379:6379 redis
Redis को अब चालू होना चाहिए और कनेक्शन स्वीकार करने के लिए तैयार होना चाहिए।
Node.js के साथ WebSocket सर्वर बनाना
प्रोजेक्ट को उचित संरचना के साथ कॉन्फ़िगर करने के लिए, एक टर्मिनल खोलें और निम्नलिखित कमांड दर्ज करें:
npm का उपयोग करके एक नया Node.js प्रोजेक्ट बनाएं (-y पैरामीटर सभी मानों को डिफ़ॉल्ट पर सेट कर देगा) :
ऊपर दिया गया अंतिम आदेश आपके प्रोजेक्ट में WebSocket और Redis निर्भरता को जोड़ता है। अब आप कुछ कोड लिखने के लिए तैयार हैं!
वेबसॉकेट सर्वर लिखना
Node.js के लिए अपना पसंदीदा कोड संपादक खोलें (मैं विजुअल स्टूडियो कोड का उपयोग करता हूं) और बस कोड “code ।” दर्ज करें। वर्तमान निर्देशिका खोलने के लिए। अपने संपादक में, server.js called नामक एक नई फ़ाइल बनाएँ ।
यह सरल Node.js कार्यक्रम प्रदर्शन तक ही सीमित है और इस पर ध्यान केंद्रित करता है:
- Redis से कनेक्ट हो रहा है (लाइन 9)
- “ऐप:नोटिफिकेशन” से संदेशों की सदस्यता लेना चैनल (पंक्ति 10)
- वेबसॉकेट सर्वर शुरू करना (लाइन 13)
- उपयोगकर्ता क्लाइंट कनेक्शन पंजीकृत करना (पंक्ति 16)
- Redis सदस्यता की घटनाओं को सुनना (पंक्ति 19)
- और सभी WebSocket क्लाइंट (21) को संदेश भेजना।
लाइन 5 और 6 का उपयोग केवल रेडिस सर्वर स्थान और पोर्ट को वेब सॉकेट सर्वर के लिए उपयोग करने के लिए कॉन्फ़िगर करने के लिए किया जाता है। जैसा कि आप देख सकते हैं यह बहुत आसान है।
वेबसॉकेट सर्वर चलाना
यदि आपने अभी तक नोडमोन स्थापित नहीं किया है , इसे अभी स्थापित करें। फिर निम्न आदेश का उपयोग करके वेबसॉकेट सर्वर प्रारंभ करें:
आइए अब एक फ्रंटएंड बनाएं जो सूचनाएं प्राप्त करेगा और उन्हें उपयोगकर्ता को प्रिंट करेगा।
Vue.js के साथ फ़्रंटएंड बनाना
एक नया टर्मिनल खोलें और सूचनाओं . से निम्न कमांड चलाएँ निर्देशिका:
यदि आपने पहले से Vue CLI टूल पहले से इंस्टॉल नहीं किया है, तो अब npm install -g @vue/cli कमांड का उपयोग करके ऐसा करें। ।
यह आदेश एक नया Vue प्रोजेक्ट बनाता है जो निष्पादित और विस्तारित होने के लिए तैयार है।
इस प्रदर्शन के लिए स्थापित करने के लिए एक अंतिम पैकेज बूटस्ट्रैपव्यू है, जो लोकप्रिय बूटस्ट्रैप ढांचे से सीएसएस पुस्तकालय और घटकों का उपयोग करना आसान बनाता है।
अपने पसंदीदा कोड संपादक में वेब-क्लाइंट निर्देशिका खोलें, फिर नव निर्मित Vue एप्लिकेशन प्रारंभ करें:
अंतिम कमांड Vue डेवलपमेंट सर्वर को शुरू करता है जो पेजों की सेवा करेगा और जब आप उन्हें बदलते हैं तो स्वचालित रूप से पेजों को फिर से लोड करता है।
अपना ब्राउज़र खोलें, और https://localhost:8080 पर जाएं; जहां आपको डिफ़ॉल्ट Vue स्वागत पृष्ठ देखना चाहिए:
वेबसॉकेट को फ़्रंटएंड में जोड़ना
Vue फ्रेमवर्क काफी सरल है, और इस पोस्ट के लिए हम कोड को यथासंभव सरल रखेंगे। तो चलिए जल्दी से डायरेक्टरी स्ट्रक्चर को देखते हैं:
├── README.md ├── babel.config.js ├── node_modules ├── package-lock.json ├── package.json ├── public │ ├── favicon.ico │ └── index.html └── src ├── App.vue ├── assets │ └── logo.png ├── components │ └── HelloWorld.vue └── main.js
रूट स्तर पर फ़ाइलें (babel.config.js , package.json , package-lock.json , <चिह्न>नोड_मॉड्यूल ) प्रोजेक्ट को कॉन्फ़िगर करने के लिए उपयोग किया जाता है। सबसे दिलचस्प हिस्सा, कम से कम अभी के लिए, src . में स्थित है निर्देशिका:
- द main.js फ़ाइल एप्लिकेशन की मुख्य जावास्क्रिप्ट फ़ाइल है, जो सभी सामान्य तत्वों को लोड करेगी और App.vue को कॉल करेगी। मुख्य स्क्रीन। बूटस्ट्रैप समर्थन जोड़ने के लिए हम इसे बाद में संशोधित करेंगे।
- द App.vue एक फ़ाइल है जिसमें किसी विशिष्ट पृष्ठ या टेम्पलेट के लिए HTML, CSS और JavaScript शामिल है। एप्लिकेशन के प्रवेश बिंदु के रूप में, यह हिस्सा डिफ़ॉल्ट रूप से सभी स्क्रीन द्वारा साझा किया जाता है, इसलिए इस फ़ाइल में अधिसूचना-क्लाइंट टुकड़ा लिखने के लिए यह एक अच्छी जगह है।
public/index.html स्थिर प्रवेश बिंदु है जहाँ से DOM लोड किया जाएगा। अगर आप इसे देखेंगे तो आपको एक
यह प्रदर्शन काफी सरल है, और आपको केवल दो फाइलों को संशोधित करना होगा:App.vue और main.js फ़ाइलें। वास्तविक जीवन के एप्लिकेशन में, आप संभवतः एक Vue.js घटक बनाएंगे जिसका विभिन्न स्थानों पर पुन:उपयोग किया जाएगा।
WebSocket संदेश दिखाने के लिए App.vue फ़ाइल को अपडेट करना
App.vue खोलें अपने संपादक में फ़ाइल करें और नीचे सूचीबद्ध जानकारी जोड़ें। पृष्ठ के निचले भाग में,
{{message}} संकेतन का उपयोग करके, आप संदेश चर की सामग्री को प्रिंट करने के लिए Vue को संकेत दे रहे हैं, जिसे आप अगले ब्लॉक में परिभाषित करेंगे।
. में , सामग्री को इसके साथ बदलें:
कोड की इन कुछ पंक्तियों का उपयोग किया जाता है:
- वेबसॉकेट सर्वर से कनेक्ट करें (लाइन 13)
- सर्वर से संदेशों का उपभोग करें और उन्हें स्थानीय संदेश भेजें चर (पंक्तियाँ 13-17)
यदि आप ध्यान से देखें कि क्या बदला गया है, तो आप देख सकते हैं कि आपने जोड़ा है:
- एक <चिह्न>डेटा () फ़ंक्शन जो Vue घटक को इंगित करता है कि आप स्थानीय चरों को परिभाषित कर रहे हैं जिन्हें स्क्रीन से ही जोड़ा जा सकता है (लाइनें 6-10)
- एक <चिह्न>बनाया गया() फ़ंक्शन जिसे Vue घटक द्वारा स्वचालित रूप से प्रारंभ किया जाता है जब इसे प्रारंभ किया जाता है
Redis से आपके Vue एप्लिकेशन को संदेश भेजना
आपके द्वारा जोड़ी गई JavaScript की कुछ पंक्तियों के कारण WebSocket सर्वर और Vue फ़्रंटएंड अब चलना और कनेक्टेड होना चाहिए। इसका परीक्षण करने का समय आ गया है!
Redis CLI या RedisInsight का उपयोग करके, कुछ संदेशों को app:notifications पर प्रकाशित करें चैनल। उदाहरण के लिए, यदि आपने डॉकर का उपयोग करके रेडिस शुरू किया है, तो आप निम्न कमांड का उपयोग करके उससे जुड़ सकते हैं और संदेश प्रकाशित करना शुरू कर सकते हैं:
आपको अपने ब्राउज़र में एप्लिकेशन के नीचे संदेश दिखाई देना चाहिए:
जैसा कि आप देख सकते हैं, WebSocket का उपयोग करके वास्तविक समय में सामग्री को अपने वेब फ्रंटएंड पर पुश करना बहुत आसान है। तो चलिए अब डिजाइन में सुधार करते हैं और बूटस्ट्रैप का उपयोग करके अधिक उपयोगकर्ता के अनुकूल इंटरफेस जोड़ते हैं।
बूटस्ट्रैप के साथ अलर्ट ब्लॉक बनाना
इस खंड में, हम आपको दिखाएंगे कि बूटस्ट्रैप अलर्ट घटक का उपयोग कैसे किया जाता है, जो एक नया संदेश प्राप्त होने पर प्रकट होता है और एक साधारण उलटी गिनती का उपयोग करके कुछ सेकंड के बाद स्वचालित रूप से गायब हो जाता है।
Main.js फ़ाइल
main.js फ़ाइल खोलें और अंतिम आयात के बाद निम्न पंक्तियाँ जोड़ें:
ये चार लाइनें आपके Vue एप्लिकेशन में बूटस्ट्रैप घटकों को आयात और पंजीकृत करती हैं।
App.js फ़ाइल
App.vue . में फ़ाइल, आपके द्वारा पहले जोड़े गए कोड को बदलें (दोनों के बीच सब कुछ
टैग और टैग स्वयं) निम्नलिखित के साथ:
यह घटक कई विशेषताओं का उपयोग करता है:
- id="अधिसूचना" तत्व आईडी है जिसका उपयोग जावास्क्रिप्ट या सीएसएस कोड में तत्व को संदर्भित करने के लिए किया जाता है:show="dismissCountDown" इंगित करता है कि घटक केवल तभी दिखाई देता है जब खारिज करेंकाउंटडाउन चर शून्य नहीं है और न ही 0
- खारिज करने योग्य उपयोगकर्ता को इसे मैन्युअल रूप से बंद करने देने के लिए अलर्ट में एक छोटा आइकन जोड़ता है
- @खारिज =”खारिज काउंटडाउन=0″ दिखाता है कि अलर्ट बॉक्स बंद हो जाएगा तो मान खारिज करेंकाउंटडाउन बराबर 0
- @खारिज-गिनती-नीचे=“गिनती नीचे बदली” उलटी गिनती विधि है
आइए अलर्ट घटक द्वारा उपयोग किए जाने वाले चर और विधियों को परिभाषित करने के लिए जावास्क्रिप्ट की कुछ पंक्तियाँ जोड़ें:
इस खंड में आपके पास है:
- खारिज सेकेंड जोड़ा गया और खारिज करेंकाउंटडाउन और डेटा () विधि (पंक्तियों 4-5) के चर जो टाइमर को नियंत्रित करने के लिए उपयोग किए जाते हैं जो इसे फिर से छिपाने से पहले अलर्ट दिखाता है
- चेतावनी घटक (पंक्ति 10-26) को दिखाने और छिपाने के लिए बनाई गई विधियां
- showAlert() कहा जाता है विधि जब एक नया संदेश प्राप्त होता है (पंक्ति 13)
आइए इसे आजमाएं!
redis-cli या Redis Insight पर वापस जाएं और app:notifications पर नए संदेश पोस्ट करें चैनल।
जैसा कि आप देख सकते हैं, आपके आवेदन के लिए एक शक्तिशाली अधिसूचना सेवा बनाने के लिए रेडिस का उपयोग करना आसान है। यह नमूना बहुत ही बुनियादी है, एक चैनल और सर्वर का उपयोग करके और सभी ग्राहकों के लिए प्रसारण।
लक्ष्य वास्तव में वेबसाकेट और रेडिस पब/सब के साथ शुरू करने का एक आसान तरीका प्रदान करना था ताकि रेडिस से वेब एप्लिकेशन पर संदेशों को धक्का दिया जा सके। विभिन्न चैनलों का उपयोग करके विशिष्ट ग्राहकों को संदेश देने और एप्लिकेशन को स्केल और सुरक्षित करने के लिए कई विकल्प हैं।
आप संदेशों का उपभोग करने के साथ-साथ क्लाइंट को संदेश पुश करने के लिए वेबसॉकेट सर्वर का उपयोग दूसरी दिशा में भी कर सकते हैं। लेकिन यह एक और ब्लॉग पोस्ट के लिए एक बड़ा विषय है। वास्तव में, अधिक ब्लॉग पोस्ट के लिए बने रहें कि कैसे आप रेडिस गियर्स का उपयोग सीधे रेडिस डेटाबेस में घटनाओं को आसानी से कैप्चर करने के लिए कर सकते हैं और कुछ घटनाओं को विभिन्न ग्राहकों तक पहुंचा सकते हैं।
अधिक जानकारी के लिए, ये संसाधन देखें:
- डमी के लिए रेडिस माइक्रोसर्विसेज (मुफ्त ईबुक)
- Redis Streams का परिचय (Redis दस्तावेज़ीकरण)
- रेडिस पब/सब (रेडिस दस्तावेज)
- रेडिस विश्वविद्यालय में एक निःशुल्क ऑनलाइन पाठ्यक्रम लें
- Redis Enterprise Cloud देखें