فشار چگونه کار می کند

مت گانت

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

سه مرحله کلیدی برای اجرای فشار عبارتند از:

  1. اضافه کردن منطق سمت سرویس گیرنده برای اشتراک کاربر برای فشار (یعنی جاوا اسکریپت و رابط کاربری در برنامه وب شما که کاربر را برای ارسال پیام ها ثبت می کند).
  2. تماس API از بک‌اند/برنامه شما که پیام فشاری را به دستگاه کاربر راه‌اندازی می‌کند.
  3. فایل جاوا اسکریپت Worker Service که یک "رویداد فشاری" را با رسیدن فشار به دستگاه دریافت می کند. در این جاوا اسکریپت است که می‌توانید یک اعلان نشان دهید.

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

مرحله 1: سمت مشتری

اولین قدم این است که یک کاربر را برای ارسال پیام "اشتراک" کنید.

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

یک PushSubscription شامل تمام اطلاعاتی است که ما برای ارسال پیام فشار به آن کاربر نیاز داریم. شما می توانید به این به عنوان یک شناسه برای دستگاه آن کاربر فکر کنید.

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

پشتیبانی مرورگر

  • 42
  • 17
  • 44
  • 16

منبع

قبل از عضویت کاربر، باید مجموعه‌ای از "کلیدهای سرور برنامه" را ایجاد کنید، که در ادامه به آنها خواهیم پرداخت.

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

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

مطمئن شوید که PushSubscription را به باطن خود ارسال کرده اید.

مرحله 2: یک پیام فشار ارسال کنید

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

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

  • سرویس فشار کیست و چیست؟
  • API چگونه به نظر می رسد؟ آیا این JSON، XML، چیز دیگری است؟
  • API چه کاری می تواند انجام دهد؟

سرویس فشار کیست و چیست؟

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

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

برای دریافت URL مناسب برای راه‌اندازی یک پیام فشار (یعنی نشانی اینترنتی سرویس فشار)، فقط باید به مقدار 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-of-unique-id-1234» نشان داده شده است. با شروع کار با فشار، متوجه این الگو خواهید شد.

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

API چگونه به نظر می رسد؟

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

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

API چه کاری می تواند انجام دهد؟

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

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

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

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

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

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

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

هنگامی که سرور شما می خواهد یک پیام فشار ارسال کند، یک پروتکل فشار وب را به یک سرویس فشار ارسال می کند.

مرحله 3: رویداد فشاری روی دستگاه کاربر

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

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

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

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

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

هنگامی که یک پیام فشار از یک سرویس فشار به دستگاه کاربر ارسال می شود، کارمند سرویس شما یک رویداد فشار دریافت می کند

این تمام جریان برای پیام رسانی فشاری است.

بعد کجا بریم

آزمایشگاه های کد