به‌روزرسانی‌های بی‌درنگ در برنامه‌های افزودنی

به‌روزرسانی‌های بلادرنگ، یک مسیر ارتباطی فوری از سرورهای شما به طور مستقیم به نصب افزونه‌هایتان فراهم می‌کنند. می‌توانید همزمان با وقوع رویدادها، داده‌ها را ارسال و دریافت کنید. چه از آن برای پیام‌رسانی فوری، راه‌اندازی وظایف پس‌زمینه یا همگام‌سازی داده‌های دستگاه استفاده کنید، این یک عملیات حیاتی با تعدادی از سرویس‌های مدرن است. گزینه‌های مختلفی برای برقراری ارتباط بلادرنگ در افزونه‌های کروم وجود دارد.

  • Web Push یا Push API یک استاندارد وب است که به شما امکان می‌دهد پیام‌ها را در یک افزونه کروم از هر ارائه‌دهنده Push یا حتی با سرور وب خودتان ارسال و دریافت کنید.
  • chrome.gcm یک API مخصوص افزونه‌های قدیمی است که به شما امکان می‌دهد با استفاده از Firebase Cloud Messaging پیام ارسال و دریافت کنید.
  • WebSockets یک پروتکل سطح پایین است که به شما امکان می‌دهد یک اتصال دو طرفه بین افزونه کروم و سرور خود برقرار کنید.

سناریوهای رایج

در اینجا چند سناریوی رایج در افزونه‌های کروم که در آن‌ها ارتباط بلادرنگ بسیار مهم است، آورده شده است:

کاربران را در جریان تغییرات قرار دهید.

اگر در حال همگام‌سازی فایل‌ها، تنظیمات یا سایر اطلاعات بین چندین کاربر هستید، Web Push روش مناسبی برای ارسال به‌روزرسانی‌های بی‌صدا به افزونه شماست تا به آن اطلاع دهید که وضعیت را از سرور به‌روزرسانی کند.

آیا به کاربران اجازه می‌دهید اشکالات یا مشکلات را گزارش دهند؟ می‌توانید با یک ارائه‌دهنده‌ی Push ادغام شوید تا به محض اینکه به‌روزرسانی برای اشتراک‌گذاری دارید، مستقیماً در افزونه‌ی خود، به آنها اطلاع دهید.

ارسال اعلان به کاربران.

اگرچه می‌توانید اعلان‌ها را کاملاً سمت کلاینت ارسال کنید، اما اگر منطق سمت سرور برای اینکه چه کسی، چه چیزی، کجا یا چه زمانی اعلان ارسال کند را دارید، Web Push گزینه‌ای ایده‌آل برای آینده است.

برای ارسال پیام به تنها زیرمجموعه‌ای از کاربران، Push بهترین انتخاب است. اگرچه Firebase Cloud Messaging قابلیت Topics (که به عنوان کانال نیز شناخته می‌شود) را ارائه می‌دهد، اما این قابلیت فقط در API HTTP Cloud Messaging آنها موجود است. این با نسخه قدیمی که chrome.gcm از آن استفاده می‌کند متفاوت است. اگر می‌خواهید پیام‌های گسترده‌ای را برای همه کاربران، از جمله کاربران نسخه‌های قدیمی کروم (قبل از کروم ۱۲۱) ارسال کنید، chrome.gcm گزینه ایده‌آلی است. chrome.gcm که بر اساس APIهای پیام‌رسانی Legacy Firebase ساخته شده است، بیش از یک دهه است که در کروم پشتیبانی می‌شود.

شما می‌توانید از Web Push یا chrome.gcm برای ارسال اعلان به کاربران در مواقعی که اتفاق مهمی برای حساب کاربری آنها رخ می‌دهد، مانند رسیدن پیام جدید یا اشتراک‌گذاری فایل، استفاده کنید.

پیام‌رسانی فوری

آیا به ارتباط مکرر و دو طرفه نیاز دارید؟ پس یک سوکت وب ممکن است بهترین گزینه برای شما باشد. این سوکت یک اتصال دو طرفه بین افزونه شما و سرور شما (یا حتی مستقیماً با سایر کاربران) برقرار می‌کند. این سوکت به شما امکان می‌دهد داده‌ها و پیام‌ها را به صورت بلادرنگ تبادل کنید. اگرچه آنها به طور کلی گزینه بسیار خوبی در وب هستند، اما محدودیت‌هایی با افزونه‌ها دارند که اگر قصد استفاده از آنها را دارید، باید آنها را در نظر داشته باشید.

در ادامه این راهنما، نگاهی دقیق‌تر به گزینه‌های موجود خواهیم داشت.

اعلان‌های فوری با Push API

با استفاده از Push API می‌توانید از هر ارائه‌دهنده‌ی Push برای ارسال اعلان‌ها و پیام‌های Push استفاده کنید. یک Push از Push API به محض دریافت توسط سرویس ورکر شما پردازش می‌شود. اگر افزونه به حالت تعلیق درآمده باشد، یک Push آن را دوباره فعال می‌کند. فرآیند استفاده از آن در افزونه‌ها دقیقاً مشابه روشی است که در وب باز از آن استفاده می‌کنید.

اعلان‌های فوری با chrome.gcm

API مربوط به chrome.gcm ارتباط مستقیمی با Firebase Cloud Messaging (FCM) فراهم می‌کند، سرویسی برای ارسال به‌روزرسانی‌های بلادرنگ به برنامه‌های وب و برنامه‌های تلفن همراه. این یک API مخصوص افزونه‌های کروم است که سال‌ها قبل از در دسترس قرار گرفتن Push در مرورگرها اضافه شده بود. این API با استفاده از APIهای HTTP قدیمی Firebase (که اکنون منسوخ شده‌اند) ساخته شده است. در حالی که این APIها در جاهای دیگر منسوخ شده‌اند، در افزونه‌ها منسوخ نشده‌اند . آن‌ها در آینده‌ای قابل پیش‌بینی به کار خود ادامه خواهند داد. با این حال، از آنجایی که این یک backend قدیمی برای push است، فاقد ویژگی‌هایی مانند Topics است.

اگرچه یک سرویس بک‌اند FCM برای رسیدن اعلان‌ها به کاربران در کروم، الزامی است، اما برای ارسال پیام نیازی به استفاده از chrome.gcm ندارید. همه ارائه‌دهندگان Push قادر به ارسال و دریافت پیام‌ها و رویدادها به یک حساب Firebase با استفاده از Push وب هستند. اگرچه این هنوز یک API افزونه کروم است که به طور کامل پشتیبانی می‌شود، اما بهترین روش این است که استانداردهای وب مانند Push API را به موارد خاص افزونه مانند این ترجیح دهید. اگر مورد استفاده شما با chrome.gcm به بهترین شکل ارائه می‌شود، یک راهنمای دقیق در مورد نحوه راه‌اندازی chrome.gcm از ابتدا وجود دارد.

پیام‌های بلادرنگ با WebSockets

وب‌سوکت‌ها بیش از یک دهه است که سنگ بنای پیام‌رسانی بلادرنگ در وب بوده‌اند. آن‌ها گزینه‌ی goto برای رویدادهای بلادرنگ در وب بوده‌اند و مکالمه‌ای مداوم و دوطرفه را فراهم می‌کنند. وب‌سوکت‌ها در اجزای افزونه‌های متنوعی کار می‌کنند، چه اسکریپت‌های محتوا ، پنجره‌های بازشو ، پنل‌های کناری یا سرویس ورکرهای پس‌زمینه . اگرچه آن‌ها به‌طورکلی گزینه‌ی بسیار خوبی در وب هستند، اما محدودیت‌هایی با افزونه‌ها دارند که اگر قصد استفاده از آن‌ها را دارید، باید آن‌ها را در نظر داشته باشید.

برای اعلان‌های فوری (push notifications) خوب نیست

از آنجایی که WebSockets در پلتفرم وب اجرا می‌شود، به جای استفاده از یک API پلتفرم افزونه مانند chrome.gcm ، کروم هیچ راهی برای بیدار کردن افزونه شما هنگام شروع اتصال Websocket در خارج از افزونه شما ندارد.

فقط اتصالات فعال

کروم افزونه‌هایی را که پس از 30 ثانیه استفاده نمی‌شوند، به حالت تعلیق در می‌آورد. کروم برای تعیین اینکه آیا افزونه "در حال استفاده" است یا خیر، از چندین روش اکتشافی استفاده می‌کند که یکی از آنها اتصال فعال WebSocket است. کروم افزونه‌ای را که در 30 ثانیه گذشته پیام WebSocket ارسال یا دریافت کرده است، به حالت تعلیق در نمی‌آورد. اگر در افزونه خود از WebSockets استفاده می‌کنید و باید مطمئن شوید که این پیام پیش از موعد بسته نشده است، می‌توانید یک پیام heartbeat برای حفظ اتصال ارسال کنید. این شامل ارسال پیام‌های دوره‌ای به سرور است که به آن و کروم اطلاع می‌دهد که هنوز فعال هستید. نمونه‌ای از نحوه فعال نگه داشتن یک websocket به طور نامحدود در مستندات WebSocket ما موجود است.