Mercurial > prosody-modules
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. |
