سازگاری
یک بکاند بیدرنگ سازگار با Pusher
PushCaster روی سیم به نسخهٔ ۷ پروتکل Pusher Channels حرف میزند. جابهجا شدن یعنی پیکربندی، نه بازنویسی — و این صفحه دقیقاً فهرست همان چیزهایی است که عوض میشوند.
بدون بازنویسی اپلیکیشن. فقط تغییر پیکربندی اتصال لازم است. سه تا شش خط برای هر اپلیکیشن؛ و برای Laravel، یک تغییر در .env و همین. نه drop-in است و نه zero-config: باید هاست را تنظیم کنید، و کلیدها تازهاند.
چه چیزی همان میماند
سیم، کتابخانهها و دستدادنِ احراز هویت
سازگاری اینجا یعنی خودِ پروتکل، نه شباهت — قالب درخواست/پاسخ، معنای رویدادها و طرح احراز هویتِ سازگار.
| حوزه | چه چیزی تغییر نمیکند |
|---|---|
| پروتکل | نسخهٔ ۷ پروتکل Pusher Channels روی سیم. |
| کتابخانههای کلاینت | pusher-js، Laravel Echo و کتابخانههای رسمی موبایل، بدون تغییر. |
| کتابخانههای سرور | pusher-php-server، pusher-http-node، و کتابخانههای Python، Go، Ruby و Java. |
| امضاها | طرح امضا و نرمالسازی سازگار. |
| انواع کانال | public، private، presence و private-encrypted، با همان پیشوندها. |
| احراز اشتراک | POST /pusher/auth همان شکل درخواست و پاسخ را نگه میدارد. |
| رویدادهای کلاینت | میان مشترکها روی کانالهای private و presence، مثل قبل. |
| وبهوکها | همان نام فیلدها و هدرها، از جمله channel_occupied، member_added و cache_miss. |
نسخههای آزمایششدهٔ SDK
با نسخههای فهرستشدهٔ SDK پوشر سازگار است، بدون تغییر در خودِ آن SDKها.
| SDK | نسخهٔ آزمایششده |
|---|---|
| pusher-js (browser) | 8.6.0 |
| pusher/pusher-php-server | 7.3.0 |
| pusher (Node.js) | 5.3.4 |
| pusher (Python) | 3.3.4 |
| pusher-http-go | v5.1.1 |
| pusher (Ruby) | 2.1.1 |
| laravel/framework (Echo) | ^13.0 |
چه چیزی عوض میشود
هاست، و کلیدها
کتابخانهٔ pusher-js تا وقتی wsHost ندهید ws-<کلاستر>.pusher.com را ثابت در خودش دارد، و کتابخانههای سرور تا وقتی هاست ندهید به api-<کلاستر>.pusher.com میروند. کل مهاجرت یعنی همین دو را بازنویسی کنید.
const pusher = new Pusher(APP_KEY, {- cluster: 'eu',+ wsHost: 'ws-eu1.pushcaster.io',+ wsPort: 443,+ forceTLS: true, })تغییر کامل، به تفکیک زبان
// before — talking to Pushernew Pusher(KEY, { cluster: 'eu' })// after — talking to PushCaster (the key & secret are new)new Pusher(KEY, { wsHost: 'ws-eu1.pushcaster.io', wsPort: 443, forceTLS: true,})تنظیمنکردن هاست راحت از قلم میافتد. اگر روی مقدار پیشفرض بماند، کتابخانه با سرورهای Pusher حرف میزند، و خطا از کلید نادرست میگوید نه از مقصد اشتباه.
app id، key و سکرت تازهاند. کلیدهای قبلی منتقل نمیشوند. همان موقع یک کلاستر هم انتخاب کنید — بخشی از هاست است.
تفاوتهای شناختهشده
سه چیز که یکسان نیستند
ادعای سازگاری فقط همراه با استثناهایش به درد میخورد. این سهتا میتوانند یک تصمیم طراحی را عوض کنند.
یک کلاستر، بدون فدراسیون
کلاستر یک مرز ایزولاسیون است، نه یک راهنمای جغرافیایی: نودها، NATS و Redis مخصوص خودش، و هیچ تحویلی بین کلاسترها. هر اپلیکیشن دقیقاً در یکی زندگی میکند، پس دو اپلیکیشنی که باید با هم حرف بزنند باید در یک کلاستر باشند.
هاست همان نام کلاستر نیست
cluster: "eu" بهتنهایی به PushCaster نمیرسد. باید wsHost را روی کلاینت و host را روی کتابخانهٔ سرور تنظیم کنید. یک ویرایش سهگزینهای است و هر مهاجرتی آن را انجام میدهد.
API آمار نداریم
اندپوینت آمار داشبورد پوشر اینجا معادلی ندارد. مصرف از API خودمان میآید و متریکهای عملیاتی از Prometheus. هیچ SDK رسمی سروری آن اندپوینت را صدا نمیزند، پس این روی ابزار خودتان اثر دارد نه روی اپلیکیشن.
مهاجرت
اول کانالهای private و presence را امتحان کنید
کانالهای public وقتی چیزی خراب است هم قبول میشوند — چون هیچ چیزی از سرور شما نمیپرسند. هاست کهنه یا سکرت ناجور فقط سر اشتراکهای private و presence خودش را نشان میدهد.
- 01اپلیکیشن را بسازیدکلاستری که انتخاب میکنید بخشی از هر هاستی است که میخواهید تنظیم کنید.
- 02هاست را در هر دو جا تنظیم کنیدکلاینت به wsHost نیاز دارد، سرور به هاست. یکی را جا بیندازید و نیمی از اپلیکیشنتان همچنان با Pusher حرف میزند.
- 03کلیدها را عوض کنیدهر سه با هم عوض میشوند. کلید تازه با سکرت قدیمی فقط روی اشتراکهای امضاشده شکست میخورد — و برای همین از یک تست سرسری جان سالم به در میبرد.
- 04به یک کانال از نوع private مشترک شویداین POST /pusher/auth را به کار میاندازد و ثابت میکند secret با app id جفت است.
- 05به یک کانال از نوع presence بپیوندیدفهرست اعضا و رویدادهای ورود و خروج را تأیید میکند.
- 06از سرور منتشر کنیدهاست انتشار و امضا را سرتاسر تأیید میکند.
یک اپلیکیشن بسازید و یک کلاینت را به آن نشانه بگیرید.
Pusher علامت تجاری صاحب آن است. PushCaster سرویسی مستقل است و وابسته به Pusher نیست و مورد تأیید آن قرار نگرفته. نام کتابخانهها صرفاً برای توصیف به کار رفتهاند.