איך דחיפת הודעות עובדת

לפני שנכנסים ל-API, נבחן את הדחיפה ברמה גבוהה, מההתחלה ועד הסוף. בהמשך, כשנעבור על נושאים נפרדים או ממשקי API מסוימים, תבינו איך ולמה הם חשובים.

שלושת השלבים העיקריים להטמעת Push הם:

  1. הוספת הלוגיקה בצד הלקוח כדי לרשום משתמש לדחיפה (כלומר, ה-JavaScript וממשק המשתמש באפליקציית האינטרנט שלכם שרושמים משתמש כדי לשלוח הודעות).
  2. הקריאה ל-API מהקצה העורפי או מהאפליקציה שמפעילה את ההודעה בדחיפה למכשיר של משתמש.
  3. קובץ ה-JavaScript של קובץ השירות (service worker) שיקבל 'אירוע דחיפה' כשהדחיפה למכשיר תגיע. ב-JavaScript הזה אפשר להציג התראה.

נבחן קצת יותר לעומק את כל אחד מהשלבים האלה.

שלב 1: בצד הלקוח

השלב הראשון הוא "לרשום" את המשתמש כדי להעביר הודעות.

מינוי משתמש דורש שני דברים. קודם כל, צריך לקבל הרשאה מהמשתמש כדי לשלוח לו הודעות בדחיפה. שנית, קבלת PushSubscription מהדפדפן.

PushSubscription מכיל את כל המידע שאנחנו צריכים כדי לשלוח הודעת Push למשתמש הזה. אפשר לחשוב על המזהה הזה בתור מזהה של המכשיר של אותו משתמש.

כל הפעולות האלו מתבצעות ב-JavaScript באמצעות Push API.

תמיכה בדפדפן

  • 42
  • 17
  • 44
  • 16

מקור

לפני שנרשמים למינוי של משתמש, צריך ליצור סדרה של 'מפתחות של שרת אפליקציות', שבהם נעסוק בהמשך.

מפתחות שרת היישומים, המכונים גם מפתחות VAPID, הם ייחודיים לשרת שלך. הם מאפשרים לשירות Push לדעת איזה שרת אפליקציות נרשם עם משתמש, ולוודא שזה אותו שרת שמפעיל את ההודעות שנשלחות למשתמש.

אחרי שרושמים את המשתמש ויש לכם PushSubscription, תצטרכו לשלוח את הפרטים של PushSubscription לקצה העורפי או לשרת שלכם. אתם שומרים את המינוי במסד נתונים בשרת ומשתמשים בו כדי לשלוח הודעת דחיפה למשתמש.

חשוב להקפיד לשלוח את ה-PushSubscription לקצה העורפי.

שלב 2: שליחת הודעה

אם רוצים לשלוח הודעת Push למשתמשים, צריך לבצע קריאה ל-API לשירות Push. הקריאה הזו ל-API תכלול אילו נתונים לשלוח, למי לשלוח את ההודעה ולכל קריטריונים לגבי שליחת ההודעה. בדרך כלל הקריאה הזו ל-API מתבצעת מהשרת שלכם.

כמה שאלות שאתם עשויים לשאול את עצמכם:

  • מי ומהו שירות הדחיפה?
  • איך נראה ה-API? האם מדובר ב-JSON, ב-XML או במשהו אחר?
  • מה ה-API יכול לעשות?

מי ומהו שירות הדחיפה?

שירות Push מקבל בקשת רשת, מאמת אותה ומעביר הודעת Push לדפדפן המתאים. אם הדפדפן במצב אופליין, ההודעה ממתינה בתור עד שהדפדפן יתחבר לאינטרנט.

כל דפדפן יכול להשתמש בכל שירות דחיפה שרוצים, למפתחים אין שליטה עליו. אין זו בעיה כי כל שירות Push מצפה לאותה קריאה ל-API. כלומר לא צריך לדעת מיהו שירות ה-Push, אלא רק לוודא שהקריאה ל-API תקינה.

כדי לקבל את כתובת ה-URL המתאימה להפעלת הודעת Push (כלומר, כתובת ה-URL של שירות ה-Push), צריך רק לחפש את הערך 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/]. שירות ה-Push יהיה 'random-push-service.com' וכל נקודת קצה (endpoint) ייחודית למשתמש, ומסומנת ב-'some-of-unique-id-1234'. כשתתחילו לעבוד עם Push, תראו את הדפוס הזה.

המפתחות במינוי יפורטו בהמשך.

איך נראה ה-API?

ציינתי שכל שירות דחיפת אינטרנט מצפה לאותה קריאה ל-API. ה-API הזה הוא Web Push Protocol. זהו תקן IETF שמגדיר איך מבצעים קריאה ל-API לשירות דחיפה.

הקריאה ל-API מחייבת הגדרה של כותרות מסוימות והנתונים יהיו זרם של בייטים. אנחנו נבדוק ספריות שיכולות לבצע את הקריאה הזו ל-API וגם נסביר איך לעשות זאת בעצמנו.

מה ה-API יכול לעשות?

ה-API מאפשר לשלוח הודעה למשתמש עם או בלי נתונים, ומספק הוראות איך לשלוח הודעה.

הנתונים שאתם שולחים בהודעת Push חייבים להיות מוצפנים. הסיבה לכך היא שהשירות מונע משירותי דחיפה, שיכולים להיות כל אחד, לראות את הנתונים שנשלחו עם ההודעה בדחיפה. זה חשוב כי הדפדפן הוא זה שמחליט באיזה שירות דחיפה להשתמש, שיכול לפתוח את הדלת לדפדפנים באמצעות שירות דחיפה לא בטוח או מאובטח.

כשאתם מפעילים הודעת Push, שירות ה-Push יקבל את הקריאה ל-API ויעביר אותה לתור. ההודעה תישאר בתור עד שהמכשיר של המשתמש יתחבר לאינטרנט ושירות הדחיפה יוכל להעביר את ההודעות. ההוראות שאפשר לתת לשירות ה-Push קובעות איך ההודעה תופיע בתור.

ההוראות כוללות פרטים כמו:

  • משך החיים של הודעת דחיפה. ההגדרה הזו קובעת את משך הזמן להודעה שצריך להוסיף לתור לפני שמסירים אותה ולא נמסרת.

  • עליך להגדיר את דחיפות ההודעה. האפשרות הזו שימושית אם שירות ה-push שומר על חיי הסוללה של המשתמשים על ידי העברת הודעות עם עדיפות גבוהה בלבד.

  • נותנים להודעת Push שם 'נושא', שיחליף את כל ההודעות הממתינות בהודעה החדשה הזו.

כשהשרת שלך מבקש לשלוח הודעת Push, הוא שולח בקשה לפרוטוקול דחיפת אינטרנט לשירות Push.

שלב 3: דחיפת אירוע במכשיר של המשתמש

אחרי ששולחים הודעת Push, שירות ה-Push ישאיר את ההודעה בשרת שלו עד שמתרחש אחד מהאירועים הבאים:

  1. המכשיר עובר למצב אונליין ושירות ה-Push מעביר את ההודעה.
  2. תוקף ההודעה יפוג. במקרה כזה, שירות הדחיפה מסיר את ההודעה מהתור שלה והיא אף פעם לא תימסר.

כששירות ה-Push ישלח הודעה, הדפדפן יקבל את ההודעה, יפענח את הנתונים וישלח אירוע push ב-Service Worker.

service worker הוא קובץ JavaScript 'מיוחד'. הדפדפן יכול להפעיל את ה-JavaScript מבלי שהדף שלכם פתוח. הוא יכול אפילו להפעיל את ה-JavaScript כאשר הדפדפן סגור. ל-Service Worker יש גם ממשקי API, כמו Push, שלא זמינים בדף האינטרנט (כלומר API שלא זמינים מתוך סקריפט של Service Worker).

הוא נמצא בתוך אירוע ה'דחיפה' של ה-Service Worker ואפשר לבצע כל משימה ברקע. תוכלו לבצע שיחות לניתוח נתונים, לשמור דפים במטמון אופליין ולהציג התראות.

כשהודעת דחיפה נשלחת משירות Push למכשיר של משתמש, ה-Service Worker מקבל אירוע דחיפה

זה כל התהליך להעברת הודעות בדחיפה.

השלבים הבאים

שיעורי Lab