نحوه عملکرد ارسال فشاری

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

سه مرحله کلیدی برای پیاده‌سازی ارسال مستقیم عبارت‌اند از:

  1. افزودن منطق سمت کارخواه برای مشترک کردن کاربر در ارسال لحظه‌ای (یعنی جاوا اسکریپت و میانای کاربری در برنامه وب شما که کاربر را برای ارسال پیام‌های لحظه‌ای ثبت می‌کند).
  2. فراخوانی میانای برنامه‌سازی کاربردی از برنامه / پسای شما که پیام لحظه‌ای را به دستگاه کاربر ارسال می‌کند.
  3. فایل جاوا اسکریپت کارگر سرویس که وقتی اعلان لحظه‌ای به دستگاه می‌رسد، «رویداد اعلان لحظه‌ای» را دریافت می‌کند. در این جاوا اسکریپت است که می‌توانید اعلان را نشان دهید.

بیایید ببینیم هریک از این مراحل شامل چه مواردی است و کمی بیشتر به جزئیات بپردازیم.

مرحله ۱: سمت کارخواه

اولین قدم این است که کاربر را برای پیام‌رسانی فشاری «مشترک» کنید.

مشترک کردن کاربر به دو چیز نیاز دارد. ابتدا، دریافت اجازه از کاربر برای ارسال پیام‌های لحظه‌ای به او. دوم، دریافت PushSubscription از مرورگر.

PushSubscription حاوی همه اطلاعاتی است که برای ارسال پیام لحظه‌ای به آن کاربر نیاز داریم. می‌توانید این را «به‌نوعی» شناسه دستگاه آن کاربر درنظر بگیرید.

همه این کارها در جاوا اسکریپت با Push API انجام می‌شود.

Browser Support

  • Chrome: 42.
  • Edge: 17.
  • Firefox: 44.
  • Safari: 16.

Source

قبل‌از مشترک کردن کاربر، باید مجموعه‌ای از «کلیدهای سرور برنامه» را تولید کنید که بعداً به آن خواهیم پرداخت.

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

وقتی کاربر را مشترک کردید و PushSubscription را دریافت کردید، باید جزئیات PushSubscription را به سرور / زیرینه خود ارسال کنید. در سرورتان، این اشتراک را در پایگاه داده ذخیره می‌کنید و از آن برای ارسال پیام لحظه‌ای به آن کاربر استفاده می‌کنید.

۱. دریافت اجازه برای ارسال پیام‌های فشاری. ۲. PushSubscription را دریافت کنید. ۳. PushSubscription را به سرورتان ارسال کنید.

مرحله ۲: ارسال پیام لحظه‌ای

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

برخی‌از سؤالاتی که ممکن است از خودتان بپرسید:

  • سرویس Push چیست و چه کسی آن را ارائه می‌دهد؟
  • میانای برنامه‌سازی کاربردی چه شکلی است؟ آیا JSON، XML، یا چیز دیگری است؟
  • میانای برنامه‌سازی کاربردی چه کاری می‌تواند انجام دهد؟

سرویس Push چیست و چه کسی آن را ارائه می‌دهد؟

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

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

برای دریافت نشانی وب مناسب برای راه‌اندازی پیام لحظه‌ای (یعنی نشانی وب برای سرویس لحظه‌ای) کافی است به مقدار endpoint در PushSubscription نگاه کنید.

در زیر نمونه‌ای از مقادیری که از PushSubscription دریافت خواهید کرد آورده شده است:

{
  "endpoint": "https://random-push-service.com/some-kind-of-unique-id-1234/v2/",
  "keys": {
    "p256dh": "BNcRdreALRFXTkOOUHK1EtK2wtaz5Ry4YfYCA_0QTpQtUbVlUls0VJXg7A8u-Ts1XbjhazAkj7I99e8QcYP7DkM=",
    "auth": "tBHItJI5svbpez7KI4CCXg=="
  }
}

نقطه پایانی در این مورد https://random-push-service.com/some-kind-of-unique-id-1234/v2/ است. سرویس ارسال مستقیم «random-push-service.com» خواهد بود و هر نقطه پایانی برای یک کاربر منحصربه‌فرد است که با «some-kind-of-unique-id-1234» نشان داده می‌شود. وقتی کار با push را شروع کنید، متوجه این الگو خواهید شد.

کلیدهای اشتراک بعداً پوشش داده خواهد شد.

میانای برنامه‌سازی کاربردی چه شکلی است؟

اشاره کردم که هر سرویس وب فشاری انتظار دارد همان فراخوانی API را داشته باشد. این میانای برنامه‌سازی کاربردی پروتکل Push وب است. این استاندارد IETF است که نحوه برقراری تماس API با سرویس push را تعریف می‌کند.

فراخوانی API مستلزم تنظیم برخی سرصفحه‌ها و تبدیل داده‌ها به جریان بایت است. کتابخانه‌هایی را که می‌توانند این فراخوانی میانای برنامه‌سازی کاربردی را برای ما انجام دهند و همچنین نحوه انجام آن توسط خودمان را بررسی خواهیم کرد.

میانای برنامه‌سازی کاربردی چه کاری می‌تواند انجام دهد؟

این میانای برنامه‌سازی کاربردی روشی برای ارسال پیام به کاربر، با / بدون داده، ارائه می‌دهد و دستورالعمل‌هایی درباره نحوه ارسال پیام ارائه می‌دهد.

داده‌هایی که با پیام لحظه‌ای ارسال می‌کنید باید رمزگذاری شده باشد. دلیل این امر این است که این کار از اینکه سرویس‌های فشاری، که می‌توانند هرکسی باشند، بتوانند داده‌های ارسال‌شده با پیام فشاری را مشاهده کنند جلوگیری می‌کند. این موضوع مهم است زیرا مرورگر تصمیم می‌گیرد از کدام سرویس push استفاده کند، که می‌تواند راه را برای مرورگرهایی که از سرویس push ناامن یا غیرایمن استفاده می‌کنند باز کند.

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

این دستورالعمل‌ها شامل جزئیاتی مثل موارد زیر است:

  • زمان زنده ماندن برای پیام فشاری. این گزینه تعیین می‌کند که پیام چه مدت باید در صف بماند تا حذف شود و تحویل داده نشود.

  • فوریت پیام را مشخص کنید. این کار زمانی مفید است که سرویس ارسال با اولویت بالا با ارسال پیام‌های دارای اولویت بالا، عمر باتری کاربر را حفظ می‌کند.

  • به پیام لحظه‌ای نام «موضوع» بدهید که هر پیام معلقی را با این پیام جدید جایگزین می‌کند.

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

مرحله ۳: رویداد Push در دستگاه کاربر

وقتی پیام لحظه‌ای را ارسال کردیم، سرویس لحظه‌ای پیام شما را در سرور خود نگه می‌دارد تا زمانی که یکی از رویدادهای زیر رخ دهد:

  1. دستگاه آنلاین می‌شود و سرویس push پیام را تحویل می‌دهد.
  2. پیام منقضی می‌شود. اگر این اتفاق بیفتد، سرویس push پیام را از صف خود برمی‌دارد و پیام هرگز تحویل داده نخواهد شد.

وقتی سرویس لحظه‌ای پیامی را تحویل می‌دهد، مرورگر پیام را دریافت می‌کند، داده‌ها را رمزگشایی می‌کند، و رویداد push را در کارگر سرویس شما ارسال می‌کند.

سرویس‌کار یک فایل جاوا اسکریپت «ویژه» است. مرورگر می‌تواند این جاوا اسکریپت را بدون باز بودن صفحه‌تان اجرا کند. حتی وقتی مرورگر بسته است، می‌تواند این جاوا اسکریپت را اجرا کند. یک کارگر خدماتی همچنین دارای APIهایی مانند push است که در صفحه وب دردسترس نیستند (یعنی APIهایی که خارج از یک اسکریپت کارگر خدماتی دردسترس نیستند).

در رویداد «push» (ارسال) کارگر سرویس است که می‌توانید هرگونه تکلیف پس‌زمینه را انجام دهید. می‌توانید تماس‌های تحلیلی برقرار کنید، صفحه‌ها را به‌صورت آفلاین ذخیره کنید، و اعلان‌ها را نشان دهید.

۱. پیام به دستگاه می‌رسد. ۲. مرورگر عامل خدماتی را فعال می‌کند. ۳. رویداد Push ارسال شد.

این کل جریان پیام‌رسانی فشاری است.

مقصد بعدی کجاست

Code labs