একটি ওয়েব অ্যাপ্লিকেশনে নেভিগেট করার সময় রিয়েল-টাইম বিজ্ঞপ্তি পাওয়া খুবই সাধারণ। বিজ্ঞপ্তিগুলি একটি চ্যাট বট, একটি সতর্কতা সিস্টেম থেকে আসতে পারে বা এমন একটি ইভেন্ট দ্বারা ট্রিগার হতে পারে যা অ্যাপটি এক বা একাধিক ব্যবহারকারীর কাছে ঠেলে দেয়৷ বিজ্ঞপ্তির উৎস যাই হোক না কেন, ডেভেলপাররা বিজ্ঞপ্তি পরিষেবা তৈরি করতে Redis ব্যবহার করছে।
একটি মাইক্রোসার্ভিসেস আর্কিটেকচার দ্বারা চালিত আধুনিক অ্যাপ্লিকেশনগুলিতে, রেডিস প্রায়শই একটি সাধারণ ক্যাশে এবং একটি প্রাথমিক ডাটাবেস হিসাবে ব্যবহৃত হয়। কিন্তু এটি রেডিস স্ট্রীমস দ্বারা চালিত একটি স্থায়ী মেসেজিং স্তর ব্যবহার করে পরিষেবাগুলির মধ্যে একটি যোগাযোগ স্তর হিসাবেও ব্যবহৃত হয়, এটির সুপরিচিত পাব/সাব (প্রকাশ/সাবস্ক্রাইব) কমান্ড ব্যবহার করে একটি হালকা ইভেন্টিং সিস্টেম৷
এই ব্লগ পোস্টে, আমরা আপনাকে দেখাব যে Vue.js, Node.js, এবং WebSockets-এর সাহায্যে তৈরি একটি ওয়েব অ্যাপ্লিকেশনে বার্তা পাঠানোর জন্য Redis Pub/Sub ব্যবহার করে একটি ছোট বিজ্ঞপ্তি পরিষেবা তৈরি করা কতটা সহজ৷
পূর্বশর্ত
এই ডেমো পরিষেবা ব্যবহার করে:
- ডকার
- Redis 5.0.x বা তার পরে (এই ডেমো রেডিস ডকার কন্টেইনার ব্যবহার করে)
- নোড প্যাকেজ ম্যানেজার (এনপিএম) সহ Node.js 10.x
- নোডেমন, একটি সহজ টুল যা বিকাশের সময় স্বয়ংক্রিয়ভাবে আপনার অ্যাপ্লিকেশন পুনরায় চালু করে
- ভিউ CLI
রিডিস সার্ভার শুরু হচ্ছে
আপনার যদি ইতিমধ্যেই একটি রেডিস ইনস্ট্যান্স চালু না থাকে, আপনি ডকার ব্যবহার করে এটি শুরু করতে পারেন; একটি টার্মিনালে, এই কমান্ডটি চালান:
> 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 নামে একটি নতুন ফাইল তৈরি করুন .
এই সাধারণ Node.js প্রোগ্রামটি প্রদর্শনের মধ্যে সীমাবদ্ধ এবং এতে ফোকাস করে:
- রেডিসের সাথে সংযোগ করা হচ্ছে (লাইন 9)
- “app:notifications” থেকে বার্তাগুলিতে সদস্যতা নেওয়া চ্যানেল (লাইন 10)
- একটি WebSocket সার্ভার শুরু করা হচ্ছে (লাইন 13)
- ব্যবহারকারী ক্লায়েন্ট সংযোগ নিবন্ধন (লাইন 16)
- রিডিস সাবস্ক্রাইব ইভেন্টগুলি শোনা (লাইন 19)
- এবং সমস্ত WebSocket ক্লায়েন্টকে বার্তা পাঠানো হচ্ছে (21)।
রেডিস সার্ভার অবস্থান এবং ওয়েব সকেট সার্ভারের জন্য ব্যবহার করার জন্য পোর্ট কনফিগার করতে লাইন 5 এবং 6 ব্যবহার করা হয়। আপনি দেখতে পাচ্ছেন এটি বেশ সহজ৷
৷ওয়েবসকেট সার্ভার চালানো হচ্ছে
আপনি যদি এখনও নোডেমন ইনস্টল না করে থাকেন , এখন ইন্সটল করুন। তারপর নিম্নলিখিত কমান্ড ব্যবহার করে WebSocket সার্ভার শুরু করুন:
আসুন এখন ফ্রন্টএন্ড তৈরি করি যা বিজ্ঞপ্তিগুলি পাবে এবং সেগুলি ব্যবহারকারীকে প্রিন্ট করবে৷
৷Vue.js দিয়ে ফ্রন্টএন্ড তৈরি করা হচ্ছে
একটি নতুন টার্মিনাল খুলুন এবং নোটিফিকেশন থেকে নিম্নলিখিত কমান্ডটি চালান ডিরেক্টরি:
আপনি যদি ইতিমধ্যে Vue CLI টুল ইনস্টল না করে থাকেন, তাহলে npm install -g @vue/cli কমান্ড ব্যবহার করে এখনই তা করুন। .
এই কমান্ডটি একটি নতুন Vue প্রজেক্ট তৈরি করে যা কার্যকর এবং প্রসারিত করার জন্য প্রস্তুত৷
৷এই প্রদর্শনের জন্য ইনস্টল করার জন্য একটি শেষ প্যাকেজ হল BootstrapVue, যা জনপ্রিয় বুটস্ট্র্যাপ ফ্রেমওয়ার্ক থেকে CSS লাইব্রেরি এবং উপাদানগুলি ব্যবহার করা সহজ করে তোলে৷
আপনার প্রিয় কোড এডিটরে ওয়েব-ক্লায়েন্ট ডিরেক্টরি খুলুন, তারপর নতুন তৈরি Vue অ্যাপ্লিকেশন শুরু করুন:
শেষ কমান্ডটি Vue ডেভেলপমেন্ট সার্ভার শুরু করে যা পৃষ্ঠাগুলিকে পরিবেশন করবে এবং আপনি যখন পৃষ্ঠাগুলি পরিবর্তন করবেন তখন স্বয়ংক্রিয়ভাবে পুনরায় লোড হবে৷
আপনার ব্রাউজার খুলুন, এবং https://localhost:8080 এ যান; যেখানে আপনি ডিফল্ট Vue স্বাগতম পৃষ্ঠা দেখতে পাবেন:
ফ্রন্টএন্ডে WebSocket যোগ করা হচ্ছে
Vue ফ্রেমওয়ার্কটি বেশ সহজ, এবং এই পোস্টের জন্য আমরা কোডটি যতটা সম্ভব সহজ রাখব। তাহলে চলুন দ্রুত ডিরেক্টরির কাঠামোটি দেখি:
├── README.md├── babel.config.js├── node_modules├── package-lock.json├── package.json├── package.json├── public─ ├co├i─co─ index.html└── src ├── App.vue ├── সম্পদ │ └── logo.png ├── উপাদান │ └── HelloWorld└─ main.রুট স্তরে ফাইলগুলি (babel.config.js , package.json , package-lock.json , নোড_মডিউল ) প্রকল্পটি কনফিগার করতে ব্যবহৃত হয়। সবচেয়ে আকর্ষণীয় অংশ, অন্তত আপাতত, src-এ অবস্থিত ডিরেক্টরি:
- The main.js ফাইল হল অ্যাপ্লিকেশনটির প্রধান জাভাস্ক্রিপ্ট ফাইল, যা সমস্ত সাধারণ উপাদান লোড করবে এবং App.vue কল করবে। প্রধান পর্দায়. বুটস্ট্র্যাপ সমর্থন যোগ করতে আমরা পরে এটি সংশোধন করব।
- The 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 উপাদান দ্বারা স্বয়ংক্রিয়ভাবে বলা হয় যখন এটি শুরু হয়
আপনার Vue অ্যাপ্লিকেশনে Redis থেকে বার্তা পাঠানো হচ্ছে
WebSocket সার্ভার এবং Vue ফ্রন্টএন্ড এখন চলমান এবং সংযুক্ত হওয়া উচিত আপনার যোগ করা জাভাস্ক্রিপ্টের কয়েকটি লাইনের জন্য ধন্যবাদ। এটা পরীক্ষা করার সময়!
Redis CLI বা RedisInsight ব্যবহার করে, কিছু বার্তা app:notifications-এ প্রকাশ করুন চ্যানেল উদাহরণস্বরূপ, আপনি যদি Docker ব্যবহার করে Redis শুরু করেন, তাহলে আপনি নিম্নলিখিত কমান্ড ব্যবহার করে এটির সাথে সংযোগ করতে পারেন এবং বার্তা প্রকাশ করা শুরু করতে পারেন:
আপনি আপনার ব্রাউজারে অ্যাপ্লিকেশনের নীচে বার্তাটি দেখতে পাবেন:
আপনি দেখতে পাচ্ছেন, ওয়েবসকেট ব্যবহার করে রিয়েল টাইমে আপনার ওয়েব ফ্রন্টএন্ডে সামগ্রী পুশ করা বেশ সহজ। তাই এখন ডিজাইন উন্নত করতে এবং বুটস্ট্র্যাপ ব্যবহার করে আরও ব্যবহারকারী-বান্ধব ইন্টারফেস যোগ করতে দিন।
বুটস্ট্র্যাপ দিয়ে একটি সতর্কতা ব্লক তৈরি করা হচ্ছে
এই বিভাগে, আমরা আপনাকে দেখাব কিভাবে একটি বুটস্ট্র্যাপ সতর্কতা উপাদান ব্যবহার করতে হয়, যা একটি নতুন বার্তা প্রাপ্ত হলে প্রদর্শিত হয় এবং একটি সাধারণ গণনা ব্যবহার করে কয়েক সেকেন্ড পরে স্বয়ংক্রিয়ভাবে অদৃশ্য হয়ে যায়।
Main.js ফাইল
main.js ফাইলটি খুলুন এবং শেষ আমদানির পরে নিম্নলিখিত লাইনগুলি যোগ করুন:
এই চারটি লাইন আপনার Vue অ্যাপ্লিকেশনে বুটস্ট্র্যাপ উপাদানগুলি আমদানি এবং নিবন্ধন করে৷
App.js ফাইল
App.vue-এ ফাইল, আপনি আগে যোগ করা কোডটি প্রতিস্থাপন করুন (দুটি
এর মধ্যে সবকিছু ট্যাগ এবং ট্যাগগুলি নিজেই) নিম্নলিখিতগুলির সাথে:
এই উপাদানটি বেশ কয়েকটি বৈশিষ্ট্য ব্যবহার করে:
- id="notification" জাভাস্ক্রিপ্ট বা CSS কোড:show=”dismissCountDown”-এ উপাদান উল্লেখ করতে ব্যবহৃত উপাদান আইডি নির্দেশ করে যে কম্পোনেন্টটি তখনই দৃশ্যমান হয় যখন খারিজ কাউন্টডাউন পরিবর্তনশীল শূন্য বা 0 নয়
- খারিজযোগ্য ব্যবহারকারীকে ম্যানুয়ালি এটি বন্ধ করতে দেওয়ার জন্য সতর্কতায় একটি ছোট আইকন যোগ করে
- @dismissed=”dismissCountDown=0″ দেখায় যে সতর্কতা বাক্সটি বন্ধ হয়ে যাবে তারপর মান dismissCountDown সমান 0
- @dismiss-count-down="countDownChanged" কাউন্টডাউন পদ্ধতি
সতর্কতা উপাদান দ্বারা ব্যবহৃত ভেরিয়েবল এবং পদ্ধতিগুলিকে সংজ্ঞায়িত করতে জাভাস্ক্রিপ্টের কয়েকটি লাইন যোগ করা যাক:
এই বিভাগে আপনার আছে:
- dismisssSecs যোগ করা হয়েছে এবং খারিজ কাউন্টডাউন এবং ডেটা() পদ্ধতির (লাইন 4-5) ভেরিয়েবল যা টাইমার নিয়ন্ত্রণ করতে ব্যবহৃত হয় যা আবার লুকানোর আগে সতর্কতা দেখায়
- সতর্কতা উপাদান (লাইন 10-26) দেখানো এবং লুকানোর পদ্ধতি তৈরি করা হয়েছে
- কে বলা হয় showAlert() পদ্ধতি যখন একটি নতুন বার্তা প্রাপ্ত হয় (লাইন 13)
আসুন এটি চেষ্টা করে দেখি!
redis-cli বা Redis Insight-এ ফিরে যান এবং app:notifications-এ নতুন বার্তা পোস্ট করুন চ্যানেল।
আপনি দেখতে পাচ্ছেন, আপনার অ্যাপ্লিকেশনের জন্য একটি শক্তিশালী বিজ্ঞপ্তি পরিষেবা তৈরি করতে Redis ব্যবহার করা সহজ। এই নমুনাটি বেশ মৌলিক, একটি একক চ্যানেল এবং সার্ভার ব্যবহার করে এবং সমস্ত ক্লায়েন্টের কাছে সম্প্রচার করা হয়৷
লক্ষ্য ছিল সত্যিই WebSocket এবং Redis Pub/Sub দিয়ে শুরু করার একটি সহজ উপায় রেডিস থেকে একটি ওয়েব অ্যাপ্লিকেশনে পাঠানোর জন্য। বিভিন্ন চ্যানেল ব্যবহার করে নির্দিষ্ট ক্লায়েন্টদের কাছে বার্তা সরবরাহ করার এবং অ্যাপ্লিকেশনটি স্কেল এবং সুরক্ষিত করার জন্য অনেকগুলি বিকল্প রয়েছে।
এছাড়াও আপনি WebSocket সার্ভারটি অন্য দিকে ব্যবহার করতে পারেন, বার্তাগুলি গ্রহণ করার পাশাপাশি ক্লায়েন্টদের কাছে বার্তাগুলি পুশ করতে৷ তবে এটি অন্য ব্লগ পোস্টের জন্য একটি বড় বিষয়। প্রকৃতপক্ষে, রেডিস ডাটাবেসে সরাসরি ইভেন্টগুলি ক্যাপচার করতে এবং বিভিন্ন ক্লায়েন্টদের কাছে কিছু ইভেন্ট ঠেলে দিতে আপনি কীভাবে Redis Gears ব্যবহার করতে পারেন সে সম্পর্কে আরও ব্লগ পোস্টের জন্য সাথে থাকুন৷
আরও তথ্যের জন্য, এই সংস্থানগুলি দেখুন:
- Redis Microservices for Dummies (ফ্রি ইবুক)
- রেডিস স্ট্রীমের ভূমিকা (রেডিস ডকুমেন্টেশন)
- Redis Pub/Sub (Redis ডকুমেন্টেশন)
- রেডিস বিশ্ববিদ্যালয়ে একটি বিনামূল্যের অনলাইন কোর্স করুন
- রেডিস এন্টারপ্রাইজ ক্লাউড দেখুন