Confirmed users
93
edits
(Created page with "[Work In Progress] The following are SimplePush hoo-doo things that are probably not important to you. Here, look at this device while I put on my sunglasses. ;Channel :The flo...") |
No edit summary |
||
| Line 1: | Line 1: | ||
This page describes the protocol used for communication by the PushServer and the UserAgent. | |||
The | '''Status: Draft''' | ||
'''Everything here applies to Version 1 of the protocol'''. Major versions may change underlying protocols, message formats and anything else. | |||
== Purpose == | |||
The SimplePush protocol is closely based on [http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/en/us/pubs/archive/37474.pdf Thialfi: A Client Notification Service for Internet-Scale Applications] and makes the same delivery guarantees, soft server state and client driven recovery. It is a signalling and not a data carrying system. The goal: To notify clients of changes to application server state in a reliable manner by ensuring that the client will always eventually learn of the latest version of an object for which it has expressed interest. | |||
== Definitions == | |||
;PushServer | |||
A publicly accessible server that implements the server side of the Push Protocol and exposes an HTTP API for AppServer's to notify it. | |||
;UserAgent | |||
A device or program that implements the client side of the Push Protocol. | |||
;Channel | ;Channel | ||
| Line 7: | Line 21: | ||
;ChannelID | ;ChannelID | ||
:Unique identifier for a Channel. Generated by UserAgent for a particular application. | :Unique identifier for a Channel. Generated by UserAgent for a particular application. Opaque identifier for both UserAgent and PushServer | ||
;UAID | ;UAID | ||
:A globally unique UserAgent ID | :A globally unique UserAgent ID. Used by the PushServer to associate channelIDs with a client. Stored by the UserAgent, but opaque to it. | ||
;Version | |||
Monotonically increasing 64-bit integer describing the application state. This | |||
holds meaning as a primary key or similar only to the AppServer. The PushServer | |||
and UserAgent and App should use this only for detecting changes. | |||
== Protocol Overview == | |||
Describe in short how the protocol works | |||
== Messages == | |||
=== Handshake === | |||
=== Register === | |||
=== Unregister === | |||
=== Notification === | |||
== Synchronization of server and client state == | |||
== Acheiving reliable delivery == | |||
API Push Client - Push Server | API Push Client - Push Server | ||