comparison mod_web_push/README.markdown @ 3613:a5da9172362a

mod_web_push: Update README
author Maxime “pep” Buquet <pep@bouah.net>
date Sun, 09 Jun 2019 22:02:24 +0200
parents 2cee9fcb318b
children f74444b0e187
comparison
equal deleted inserted replaced
3612:2cee9fcb318b 3613:a5da9172362a
12 missing payload encryption. Other vendors require it all the time. Public and 12 missing payload encryption. Other vendors require it all the time. Public and
13 private keys are also statically set in it.** 13 private keys are also statically set in it.**
14 ::: 14 :::
15 15
16 This is an implementation of the server bits of [XEP-XXXX: Web Push]. 16 This is an implementation of the server bits of [XEP-XXXX: Web Push].
17 It allows clients to register a "push server" which is notified about new 17
18 It allows web clients to register a "push server" which is notified about new
18 messages while the user is offline, disconnected or the session is hibernated 19 messages while the user is offline, disconnected or the session is hibernated
19 by [mod_smacks]. 20 by [mod_smacks].
20 21
21 Push servers are provided by browser vendors. 22 Push servers are provided by browser vendors.
22 23
23 This module is heavily based on [mod_cloud_notify]. 24 This module is heavily based on [mod_cloud_notify].
25
26 Details
27 =======
28
29 [Push API](https://w3c.github.io/push-api/) is a specification by the W3C that
30 is essentially the same principle as Mobile OS vendors' Push notification
31 systems. It is implemented by most browsers vendors except Safari on iOS
32 (mobile).
33
34 For more information, see:
35 - https://developer.mozilla.org/en-US/docs/Web/API/Push_API
36 - https://developers.google.com/web/ilt/pwa/introduction-to-push-notifications
37
38 Compared to [XEP-0357: Push Notifications], Web Push doesn't need an App
39 Server.
40
41 The general flow for subscription is:
42 - XMPP server generate ECDH keypair, publishes public key
43 - XMPP client generates an ECDH keypair
44 - XMPP client fetches server public key
45 - XMPP client subscribes to browser Push server using the Web Push API, and
46 gets back an HTTP endpoint
47 - XMPP client enables Push notifications telling the server the HTTP endpoint,
48 and its public key
49
50 The flow for notifications is as follow:
51 - XMPP server receives an _important_[^1] message
52 - XMPP server generates something something JWT + signature with ECDH key
53 - XMPP server can optionally include payload encrypted for the client
54 - XMPP server initiates HTTP POST request to the Push server
55 - Push server sends notification to web browser
24 56
25 Configuration 57 Configuration
26 ============= 58 =============
27 59
28 Option Default Description 60 Option Default Description
41 73
42 Configuration 74 Configuration
43 ============= 75 =============
44 76
45 Configured in-band by supporting clients. 77 Configured in-band by supporting clients.
78
79 [^1]: As defined in mod_cloud_notify, or mod_csi_simple.