اعلان وب webpush
فرستادن اعلان به مرورگرها از سرور، با کلیدهای VAPID و رمزنگاری استاندارد.
واردسازی اعلان وب
اعلان وب پیامی است که سرور حتی وقتی سایت باز نیست به مرورگر کاربر میفرستد. روند کار: یک بار با ساخت کلیدها کلید بسازید، کلید عمومی را در جاوااسکریپت صفحه برای اشتراک به کار ببرید، اشتراکی را که مرورگر میسازد در سرور ذخیره کنید و با ارسال پیام بفرستید.
پیام پیش از فرستادن طبق RFC 8291 رمز میشود، پس سرویس اعلان مرورگر محتوای آن را نمیبیند. اگر نتیجه gone بود، کاربر اشتراک را لغو کرده است.
گونهها
کلیدها Keys
ساختار کلیدها| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| public_key | public_key | رشته = "" | کلید عمومی به شکل بیس۶۴ نشانیامن؛ همین را در جاوااسکریپت صفحه به applicationServerKey بدهید. |
| private_key | private_key | رشته = "" | کلید خصوصی؛ آن را پنهان نگه دارید. |
| ok | ok | منطقی = نادرست | کلیدها معتبرند. |
واردسازی اعلان وب
واردسازی رشته
روال ریشه:
تازه := اعلان وب.ساخت کلیدها()
سرچاپ تازه.ok، تازه.public_key.طول()، تازه.private_key.طول()
ک := اعلان وب.کلیدها از("BLmOwafYGSjiuCX_1RSCO_n0YmacxYMDqitMydKE4A1Wp2qmUuMXg2IM_hzcrmZLun4jEu_lKfVdtnAp0LMK4NE"، "Nhh4m4Va4yhL-53i302044iqeAeMtnOEYlIT2KWRJmg")
سرچاپ ک.ok، اعلان وب.کلیدها از(""، "").ok
س := اعلان وب.سرصفحه واپید در زمان(ک، "https://fcm.googleapis.com"، "mailto:[email protected]"، ۱۷۰۰۰۰۰۰۰۰)
سرچاپ س
ا := اعلان وب.سرصفحه واپید(ک، "https://fcm.googleapis.com"، "mailto:[email protected]")
سرچاپ رشته.شروع با(ا، "vapid t=")، رشته.شامل است(ا، ", k=" + ک.public_key)
ناپایا گ := اعلان وب.گزینههای جدید("mailto:[email protected]")
سرچاپ گ.subject، گ.ttl == اعلان وب.ماندگاری پیشفرض، گ.ttl / ۸۶۴۰۰
گ.urgency = "high"
گ.topic = "news"
گ.ttl = ۳۶۰۰
سرچاپ گ.urgency، گ.topic، گ.ttl
پایاناشتراک Subscription
ساختار اشتراکpushManager.subscribe میسازد و به سرور شما میفرستد.| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| endpoint | endpoint | رشته = "" | نشانی سرویس اعلان مرورگر. |
| p256dh | p256dh | رشته = "" | کلید عمومی مرورگر از بخش keys اشتراک. |
| auth | auth | رشته = "" | راز احراز هویت از همان بخش. |
واردسازی اعلان وب
روال ریشه:
ا := اعلان وب.اشتراک {
endpoint = "https://push.example.net/x"،
p256dh = "BCVxsr7N_eNgVRqvHtD0zTZsEc6-VV-JvLexhqUzORcxaOzi6-AYWXvTBHm4bjyPjs7Vd8pZGH6SRpkNtoIAiw4"،
auth = "BTBZMqHH6r4Tts7J_aSIgg"
}
ناپایا سالم := نادرست
بدنه := اعلان وب.رمزنگاری سفارشی(ا، "When I grow up, I want to be a watermelon"، "yfWPiYE-n46HLnH0KqZOF1fJJU3MYrct3AELtAQ-oRw"، "DGv6ra1nlYgDCS1FRnbzlw"، سالم)
سرچاپ سالم
سرچاپ بدنه
یک := اعلان وب.رمزنگاری(ا، "سلام"، سالم)
دو := اعلان وب.رمزنگاری(ا، "سلام"، سالم)
سرچاپ سالم، یک != دو، یک.طول() == دو.طول()
پایانگزینهها Options
ساختار گزینهها| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| subject | subject | رشته = "" | نشانی تماس شما، به شکل mailto: یا نشانی وب؛ سرویسها آن را لازم دارند. |
| ttl | ttl | صحیح = 2419200 | چند ثانیه سرویس پیام را برای مرورگر خاموش نگه دارد. |
| urgency | urgency | رشته = "" | فوریت: very-low، low، normal یا high. |
| topic | topic | رشته = "" | موضوع؛ پیام تازه با همان موضوع جای پیام تحویلنشدهی قبلی را میگیرد. |
نمونهی این مورد همراه با موارد بالاتر آمده است: webpush-Keys.salam
نتیجه Result
ساختار نتیجه| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| ok | ok | منطقی = نادرست | سرویس پیام را پذیرفت. |
| status | status | صحیح = 0 | کد وضعیت HTTP سرویس. |
| gone | gone | منطقی = نادرست | اشتراک دیگر معتبر نیست (۴۰۴ یا ۴۱۰)؛ آن را از پایگاه داده پاک کنید. |
| error | error | رشته = "" | پیام خطا. |
واردسازی اعلان وب
روال ریشه:
ک := اعلان وب.کلیدها از("BLmOwafYGSjiuCX_1RSCO_n0YmacxYMDqitMydKE4A1Wp2qmUuMXg2IM_hzcrmZLun4jEu_lKfVdtnAp0LMK4NE"، "Nhh4m4Va4yhL-53i302044iqeAeMtnOEYlIT2KWRJmg")
ا := اعلان وب.اشتراک {
endpoint = "https://fcm.googleapis.com/fcm/send/abc"،
p256dh = "BCVxsr7N_eNgVRqvHtD0zTZsEc6-VV-JvLexhqUzORcxaOzi6-AYWXvTBHm4bjyPjs7Vd8pZGH6SRpkNtoIAiw4"،
auth = "BTBZMqHH6r4Tts7J_aSIgg"
}
گ := اعلان وب.گزینههای جدید("mailto:[email protected]")
ن := اعلان وب.ارسال(ک، ا، `{"title":"سلام","body":"پیام تازه دارید"}`، گ)
اگر ن.ok:
سرچاپ "فرستاده شد"، ن.status
وگرنه ن.gone:
سرچاپ "اشتراک منقضی شده؛ آن را پاک کنید"
وگرنه:
سرچاپ "خطا:"، ن.status، ن.error
پایان
پایانپایاها و متغیرها
ماندگاری پیشفرض DEFAULT_TTL
پایا ماندگاری پیشفرض: صحیح۳۲ = 2419200نمونهی این مورد همراه با موارد بالاتر آمده است: webpush-Keys.salam
روالها
ساخت کلیدها GenerateKeys
روال ساخت کلیدها(): کلیدهانمونهی این مورد همراه با موارد بالاتر آمده است: webpush-Keys.salam
سرصفحه واپید در زمان VapidHeaderAt
روال سرصفحه واپید در زمان(keys: کلیدها، audience: رشته، subject: رشته، epoch_seconds: صحیح۶۴): رشتهAuthorization برای سرویسی که نشانیاش داده شده، با زمان دادهشده بر حسب ثانیهی یونیکس. امضا قطعی است، پس با ورودی یکسان خروجی یکسان است.نمونهی این مورد همراه با موارد بالاتر آمده است: webpush-Keys.salam
سرصفحه واپید VapidHeader
روال سرصفحه واپید(keys: کلیدها، audience: رشته، subject: رشته): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: webpush-Keys.salam
رمزنگاری سفارشی EncryptWith
روال رمزنگاری سفارشی(sub: اشتراک، payload: رشته، as_private: رشته، salt: رشته، ok &: منطقی): رشتهرمزنگاری را به کار ببرید.نمونهی این مورد همراه با موارد بالاتر آمده است: webpush-Encrypt.salam
رمزنگاری Encrypt
روال رمزنگاری(sub: اشتراک، payload: رشته، ok &: منطقی): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: webpush-Encrypt.salam
ارسال Send
روال ارسال(keys: کلیدها، sub: اشتراک، payload: رشته، opts: گزینهها): نتیجهنمونهی این مورد همراه با موارد بالاتر آمده است: webpush-Send.salam
گزینههای جدید NewOptions
روال گزینههای جدید(subject: رشته): گزینههانمونهی این مورد همراه با موارد بالاتر آمده است: webpush-Keys.salam
کلیدها از KeysFrom
روال کلیدها از(public_key: رشته، private_key: رشته): کلیدهاok نادرست است.نمونهی این مورد همراه با موارد بالاتر آمده است: webpush-Keys.salam