Pusher: দ্বিমুখী রিয়েল-টাইম যোগাযোগের জন্য হোস্টেড পরিষেবা, যা চ্যানেল, ইভেন্ট এবং ওয়েবহুক বিজ্ঞপ্তির জন্য অবকাঠামো প্রদান করে। এটি ডেভেলপারকে নিজস্ব WebSocket সার্ভার স্থাপনের প্রয়োজনীয়তা থেকে মুক্তি দেয় এবং লক্ষ লক্ষ ডিভাইসে বার্তা সরবরাহ নিশ্চিত করে। অফিসিয়াল Pusher ডকুমেন্টেশন (2025) অনুযায়ী, পরিষেবাটি বিশ্বব্যাপী মাসিক 40 বিলিয়নেরও বেশি বার্তা প্রক্রিয়া করে।
মূল পয়েন্ট
Pusher হল দ্বিমুখী রিয়েল-টাইম যোগাযোগের জন্য একটি ক্লাউড পরিষেবা, যা 2011 সালে প্রতিষ্ঠিত হয়েছিল। এটি নিজস্ব WebSocket সার্ভার পরিচালনা না করেই রিয়েল টাইমে বার্তা পাঠানো এবং গ্রহণের জন্য প্রস্তুত অবকাঠামো সরবরাহ করে। Pusher চ্যাট, লাইভ বিজ্ঞপ্তি, সহযোগিতামূলক সম্পাদনা এবং গেম লিডারবোর্ড তৈরিতে ব্যবহৃত হয়।
Socket.IO-র মতো লাইব্রেরির বিপরীতে, যার নিজস্ব সার্ভার স্থাপন এবং রক্ষণাবেক্ষণ প্রয়োজন, Pusher SaaS (পরিষেবা হিসাবে সফ্টওয়্যার) মডেলে কাজ করে। ডেভেলপার নিবন্ধন করে, কী (app_id, key, secret) পায় এবং ইভেন্ট প্রকাশ করতে Pusher REST API ব্যবহার করে। সার্ভার অবকাঠামো সম্পূর্ণরূপে Pusher প্ল্যাটফর্ম দ্বারা পরিচালিত হয়।
অফিসিয়াল Pusher ব্লগ (2025) অনুযায়ী, প্ল্যাটফর্মটি বিশ্বব্যাপী 250,000-এরও বেশি সক্রিয় প্রকল্প পরিষেবা দেয়। পরিচিত ক্লায়েন্টদের মধ্যে রয়েছে GitHub (রিয়েল-টাইম বিজ্ঞপ্তি), Trello (বোর্ড সিঙ্ক্রোনাইজেশন) এবং Intercom (সহায়তা চ্যাট)। Pusher লেটেন্সি কমানোর জন্য মার্কিন যুক্তরাষ্ট্র, ইউরোপ এবং এশিয়ায় ডেটা কেন্দ্র সমর্থন করে।
Pusher 2011 সালে WebSocket-এর জন্য প্রথম হোস্টেড পরিষেবাগুলির মধ্যে একটি হিসাবে চালু হয়েছিল। 2014 সালে, কোম্পানি Pusher Channels চালু করে — private এবং presence চ্যানেল সমর্থন সহ বর্তমান আর্কিটেকচার। 2017 সালে, সার্ভার-সাইড ইভেন্টের জন্য ওয়েবহুক সমর্থন যুক্ত করা হয়। 2022 সালে, Pusher মোবাইল প্ল্যাটফর্মের জন্য পুশ বিজ্ঞপ্তি পরিষেবা Pusher Beams চালু করে।
Pusher আর্কিটেকচার সেলফ-হোস্টেড সমাধান থেকে আলাদা কারণ সমস্ত সাবস্ক্রিপশন পরিচালনা, সংযোগ ব্যবস্থাপনা এবং ইভেন্ট রাউটিং Pusher Cloud-এর পক্ষে ঘটে। ডেভেলপার শুধুমাত্র তাদের ব্যাকএন্ডের মাধ্যমে private চ্যানেলের প্রমাণীকরণ পরিচালনা করে।
Pusher আর্কিটেকচার প্রকাশক-সাবস্ক্রাইবার মডেলের উপর ভিত্তি করে। সার্ভার অ্যাপ্লিকেশনগুলি Pusher REST API-র মাধ্যমে ইভেন্ট প্রকাশ করে, এবং ক্লায়েন্ট অ্যাপ্লিকেশনগুলি একটি স্থায়ী WebSocket সংযোগের মাধ্যমে সেগুলি গ্রহণ করে। Pusher প্রকাশক এবং সাবস্ক্রাইবারদের মধ্যে মধ্যস্থতাকারী হিসাবে কাজ করে।
যখন সার্ভার Pusher API-তে POST অনুরোধের মাধ্যমে একটি ইভেন্ট পাঠায়, প্ল্যাটফর্মটি লক্ষ্য চ্যানেল নির্ধারণ করে এবং সেই চ্যানেলে সাবস্ক্রাইব করা সমস্ত ক্লায়েন্টের কাছে বার্তা বিতরণ করে। ক্লায়েন্টরা ইতিমধ্যে খোলা WebSocket সংযোগের মাধ্যমে ইভেন্ট গ্রহণ করে, যা ভৌগোলিক অবস্থানের উপর নির্ভর করে 50–100 ms লেটেন্সি প্রদান করে।
প্রতিটি ক্লায়েন্ট Pusher Client SDK-র মাধ্যমে সংযোগ স্থাপন করে, যা স্বয়ংক্রিয়ভাবে পরিবহন নির্বাচন করে (WebSocket — অগ্রাধিকার, HTTP long-polling — ফallback)। SDK ডেভেলপারের অংশগ্রহণ ছাড়াই পুনঃসংযোগ, ডেটা সিরিয়ালাইজেশন এবং ত্রুটি পরিচালনা করে। Pusher প্রযুক্তিগত ডকুমেন্টেশন (2025) অনুযায়ী, নেটওয়ার্ক বাধার পরে পুনঃসংযোগের সময় 1 সেকেন্ডের কম।
সিস্টেমটি তিনটি উপাদান নিয়ে গঠিত: Pusher Server API (ইভেন্ট প্রকাশের জন্য REST এন্ডপয়েন্ট), Pusher Client SDK (ইভেন্ট সাবস্ক্রাইব করার জন্য লাইব্রেরি) এবং Pusher WebHook (সংযোগ/বিচ্ছিন্ন ইভেন্ট সম্পর্কে সার্ভার বিজ্ঞপ্তি)। সমস্ত উপাদান অ্যাসিঙ্ক্রোনাস এবং স্বাধীনভাবে কাজ করে।
Pusher Channels তিন ধরনের চ্যানেল সমর্থন করে, প্রতিটি ভিন্ন ব্যবহারের ক্ষেত্রে জন্য ডিজাইন করা হয়েছে। চ্যানেলের ধরন অ্যাক্সেস স্তর, প্রমাণীকরণ পদ্ধতি এবং উপলব্ধ ক্ষমতা নির্ধারণ করে।
| চ্যানেলের ধরন | উপসর্গ | প্রমাণীকরণ | ব্যবহার |
|---|---|---|---|
| Public | channel- | প্রয়োজন নেই | পাবলিক ডেটা: মুদ্রার হার, আবহাওয়া, খবরের ফিড |
| Private | private- | সার্ভারে অনুরোধ স্বাক্ষর | ব্যক্তিগত বিজ্ঞপ্তি, চ্যাট, ব্যবহারকারীর ডেটা |
| Presence | presence- | স্বাক্ষর + ব্যবহারকারীর তথ্য | অনলাইন অবস্থা, গেম রুম, সহযোগিতামূলক সম্পাদনা |
Public চ্যানেল প্রমাণীকরণ ছাড়াই সমস্ত ক্লায়েন্টের জন্য উপলব্ধ এবং সম্প্রচার ডেটার জন্য উপযুক্ত। Private চ্যানেল ডেভেলপারের সার্ভারের মাধ্যমে প্রমাণীকরণ প্রয়োজন: ক্লায়েন্ট তাদের ব্যাকএন্ডে socket_id এবং channel_name সহ অনুরোধ পাঠায়, সার্ভার Pusher গোপন কী দিয়ে অনুরোধে স্বাক্ষর করে এবং একটি প্রমাণীকরণ টোকেন ফেরত দেয়। Presence চ্যানেল অতিরিক্তভাবে ব্যবহারকারীর তথ্য (user_id, user_info) প্রেরণ করে এবং কে বর্তমানে অনলাইন তা ট্র্যাক করার অনুমতি দেয়।
Pusher ডকুমেন্টেশন (2025) অনুযায়ী, public এবং private চ্যানেলের জন্য প্রতি চ্যানেলে সর্বোচ্চ 10,000 একযোগে সংযুক্ত ক্লায়েন্ট। Presence চ্যানেলের জন্য, সীমা প্রতি চ্যানেলে 10,000 ব্যবহারকারী এবং প্রতি অ্যাপ্লিকেশনে 100,000 ব্যবহারকারী পর্যন্ত সমর্থন।
Pusher ইভেন্ট মডেল নামযুক্ত ইভেন্টের উপর ভিত্তি করে যা একটি চ্যানেলে প্রকাশিত হয়। প্রতিটি ইভেন্টের একটি নাম (সর্বোচ্চ 200 অক্ষর), JSON ফর্ম্যাটে ডেটা এবং ইভেন্ট সূচনাকারীকে নকল পাঠানো রোধ করতে ঐচ্ছিক socket_id থাকে।
ট্রিগার হল Pusher API-তে HTTP POST অনুরোধ যা একটি চ্যানেলে ইভেন্ট প্রকাশ করে। অনুরোধ বিন্যাস: channel, name এবং data সম্বলিত বডি সহ POST /apps/{app_id}/events। Pusher Server API অফিসিয়াল লাইব্রেরি (PHP, Ruby, Python, Go, Java, Node.js) এর মাধ্যমে যেকোনো সার্ভার পরিবেশ থেকে ট্রিগার সমর্থন করে।
Pusher ব্যাচ ট্রিগার সমর্থন করে — একটি অনুরোধের সাথে একাধিক চ্যানেলে একটি ইভেন্ট প্রকাশ করা। এটি অনুক্রমিক কলের চেয়ে বেশি কার্যকর এবং পারমাণবিক বিতরণ নিশ্চিত করে। Pusher পারফরম্যান্স পরীক্ষা (2024) অনুযায়ী, 100 চ্যানেলে ব্যাচ ট্রিগার 30–50 ms নেয়, যখন অনুক্রমিক কল 2–5 সেকেন্ড নেয়।
Pusher WebHook আপনার সার্ভারকে অবকাঠামো ইভেন্ট সম্পর্কে বিজ্ঞপ্তি পেতে দেয়: ক্লায়েন্ট সংযোগ, বিচ্ছিন্ন, ত্রুটির ঘটনা। যাচাইয়ের জন্য WebHook অনুরোধ HMAC-SHA256 দিয়ে স্বাক্ষরিত হয়। এটি লগিং, বিশ্লেষণ এবং অবস্থা সিঙ্ক্রোনাইজেশনের জন্য গুরুত্বপূর্ণ।
Pusher ইন্টিগ্রেশন দুটি অংশ নিয়ে গঠিত: সার্ভার-সাইড (ইভেন্ট প্রকাশ) এবং ক্লায়েন্ট-সাইড (ইভেন্ট সাবস্ক্রাইব)। আসুন সার্ভার অংশের জন্য Node.js এবং ক্লায়েন্ট অংশের জন্য JavaScript ব্যবহার করে একটি উদাহরণ দেখি। প্রথমে, আপনাকে Pusher ড্যাশবোর্ডে একটি অ্যাপ্লিকেশন তৈরি করতে হবে এবং ক্রেডেনশিয়াল পেতে হবে।
Pusher ডকুমেন্টেশন (2025) অনুযায়ী, বেসিক প্ল্যান (Sandbox) 100টি সমবর্তী সংযোগ এবং প্রতিদিন 200,000 বার্তা অন্তর্ভুক্ত করে — উন্নয়ন এবং পরীক্ষার জন্য যথেষ্ট। প্রোডাকশন প্ল্যান 1000 সংযোগের জন্য $49/মাস থেকে শুরু হয়।
const Pusher = require('pusher');
const pusher = new Pusher({
appId: 'YOUR_APP_ID',
key: 'YOUR_KEY',
secret: 'YOUR_SECRET',
cluster: 'eu',
useTLS: true
});
pusher.trigger('my-channel', 'my-event', {
message: 'Hello from server',
timestamp: Date.now()
}).then(() => {
console.log('ইভেন্ট প্রকাশিত হয়েছে');
}).catch(console.error);
import Pusher from 'pusher-js';
const pusher = new Pusher('YOUR_KEY', {
cluster: 'eu',
forceTLS: true
});
const channel = pusher.subscribe('my-channel');
channel.bind('my-event', (data) => {
console.log('ইভেন্ট প্রাপ্ত হয়েছে:', data);
displayNotification(data.message);
});
Pusher iOS (Swift) এবং Android (Java/Kotlin) এর জন্য SDK সরবরাহ করে যা JavaScript ক্লায়েন্টের কার্যকারিতা সম্পূর্ণরূপে নকল করে। মোবাইল SDK একই চ্যানেলের ধরন, প্রমাণীকরণ পদ্ধতি এবং ইভেন্ট মডেল সমর্থন করে। React Native-এর জন্য, pusher-js প্যাকেজ উপলব্ধ যা JavaScript ব্রিজের মাধ্যমে কাজ করে।
মোবাইল ডিভাইসে, Pusher SDK এক্সপোনেনশিয়াল ব্যাকঅফ সহ পুনঃসংযোগ প্রক্রিয়া ব্যবহার করে Wi-Fi এবং মোবাইল নেটওয়ার্কের মধ্যে স্যুইচিং স্বয়ংক্রিয়ভাবে পরিচালনা করে। এটি iOS অ্যাপের জন্য বিশেষভাবে গুরুত্বপূর্ণ, যেখানে iOS ব্যাকগ্রাউন্ড অপারেশনের সময় WebSocket সংযোগ জোর করে বন্ধ করতে পারে।
Pusher প্রযুক্তিগত ব্লগ (2024) অনুযায়ী, যখন কোনো সক্রিয় ইভেন্ট নেই তখন একটি Pusher সংযোগের গড় ট্রাফিক খরচ প্রতি মিনিটে 1–2 KB। এটি 30 সেকেন্ডের ব্যবধানে একটি অপ্টিমাইজড হার্টবিট প্রোটোকলের মাধ্যমে অর্জন করা হয়। একটি মাঝারি আকারের অ্যাপ্লিকেশন ব্যাটারি লাইফে উল্লেখযোগ্যভাবে প্রভাব না ফেলে 1000টি সমবর্তী Pusher সংযোগ সমর্থন করতে পারে।
Pusher Beams APNs (iOS) এবং FCM (Android) এর মাধ্যমে মোবাইল ডিভাইসে পুশ বিজ্ঞপ্তি পাঠানোর জন্য একটি অতিরিক্ত পরিষেবা। Beams Pusher Channels-এর সাথে ইন্টিগ্রেট হয়: ক্লায়েন্ট অফলাইন থাকলে একটি চ্যানেলের ইভেন্ট স্বয়ংক্রিয়ভাবে একটি পুশ বিজ্ঞপ্তি ট্রিগার করতে পারে। এটি অ্যাপ বন্ধ থাকাকালীন বার্তা সরবরাহের সমস্যা সমাধান করে।
Pusher নিরাপত্তা বিভিন্ন স্তরে প্রয়োগ করা হয়। Pusher API-তে প্রতিটি অনুরোধ app_secret ব্যবহার করে HMAC-SHA256 দিয়ে স্বাক্ষরিত হয়। এটি নিশ্চিত করে যে শুধুমাত্র অনুমোদিত সার্ভার ইভেন্ট প্রকাশ করতে পারে। ক্লায়েন্ট SDK অ্যাপ্লিকেশন সনাক্তকরণের জন্য app_key ব্যবহার করে, কিন্তু private এবং presence চ্যানেল অ্যাক্সেস করতে অতিরিক্ত প্রমাণীকরণ প্রয়োজন।
Private চ্যানেল প্রমাণীকরণ তিনটি ধাপে ঘটে: ক্লায়েন্ট pusher.subscribe('private-channel') কল করে, Pusher Client SDK আপনার ব্যাকএন্ড এন্ডপয়েন্টে (/pusher/auth) HTTP অনুরোধ পাঠায়, সার্ভার ব্যবহারকারীর অনুমতি পরীক্ষা করে এবং গোপন কী দিয়ে স্বাক্ষরিত প্রমাণীকরণ টোকেন ফেরত দেয়। Pusher স্বাক্ষর যাচাই করে এবং সাবস্ক্রিপশন অনুমতি দেয়।
সমস্ত অনুরোধের জন্য TLS সংযোগ ব্যবহার করার পরামর্শ দেওয়া হয় (SDK-তে useTLS: true সেটিং)। Pusher REST API-তে সার্ভার অনুরোধের জন্য IP ঠিকানা দ্বারা অ্যাক্সেস সীমাবদ্ধতাও সমর্থন করে। এন্টারপ্রাইজ প্ল্যানের জন্য, VPC (ভার্চুয়াল প্রাইভেট ক্লাউড) এবং বিচ্ছিন্ন অবকাঠামো সহ ডেডিকেটেড ক্লাস্টারের সমর্থন উপলব্ধ।
সচরাচর জিজ্ঞাস্য
Pusher একটি হোস্টেড পরিষেবা (SaaS) যার সার্ভার পরিচালনার প্রয়োজন নেই। Socket.IO একটি লাইব্রেরি যা আপনাকে নিজেকে স্থাপন করতে হবে। Pusher সেটআপ করা সহজ কিন্তু স্কেলিং করার সময় বেশি ব্যয়বহুল, Socket.IO-তে DevOps কাজ প্রয়োজন কিন্তু বড় ভলিউমে সস্তা।
বিনামূল্যের Sandbox প্ল্যানে 100টি সংযোগ এবং প্রতিদিন 200,000 বার্তা অন্তর্ভুক্ত। প্রোডাকশন প্ল্যান $49/মাস (1000 সংযোগ, সীমাহীন বার্তা) থেকে কাস্টম শর্ত সহ এন্টারপ্রাইজ পর্যন্ত শুরু হয়।
Pusher HTTP long-polling-এ স্বয়ংক্রিয় ফallback সহ WebSocket ব্যবহার করে। গুরুত্বপূর্ণ বার্তাগুলির জন্য, কমপক্ষে একবার সরবরাহ গ্যারান্টি (at-least-once) সহ Pusher পক্ষে একটি সারি উপলব্ধ।
হ্যাঁ, Pusher ইউরোপীয় ক্লাস্টার (eu) এর মাধ্যমে রাশিয়া থেকে উপলব্ধ। ইউরোপীয় ডেটা কেন্দ্রগুলির জন্য লেটেন্সি 50–100 ms। ডেটা লোকালাইজেশন প্রয়োজনীয়তা সহ প্রকল্পগুলির জন্য, বিকল্প বিবেচনা করার পরামর্শ দেওয়া হয়।
প্রধান প্রতিযোগীরা হল Ably (অনুরূপ কার্যকারিতা, আরও নমনীয় মূল্য), PubNub (গ্লোবাল ডেলিভারি নেটওয়ার্ক), Socket.IO (সেলফ-হোস্টেড) এবং Firebase Realtime Database (Google ইকোসিস্টেম)।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন