Skip to content

Instantly share code, notes, and snippets.

@matzew
Last active December 16, 2015 02:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save matzew/17f793e4be11473423d2 to your computer and use it in GitHub Desktop.
Save matzew/17f793e4be11473423d2 to your computer and use it in GitHub Desktop.

AeroGear Connectivity

The connectivity part in AeroGear (name: AeroGear Connectivity Server?) is responsible to deliver messages from the server to the client. It contains two different components:

  • Device Push
  • Web Push

The Web Push offers a low-latency message deliver from the server to connected clients, while the Device Push delivers notification-style messages to an explict application, deployed on a mobile device.

Device Push

Push Notifications can be send to an explicit application (or even a specific installation), deployed on a mobile device, wheter the application is running or not. Push Messages are not intented to deliver large messages, nor in a low-latency fashion. They are more notification-style messages. The latency can not be controlled, since the actual message delivery, to the phone, is controlled by the actual Push Network.

The AeroGear server submits messages, for a certain mobile app, to such a Push Network (like APNs or GCM). Different Push Networks have different limitations and restrictions, regarding message size, etc. Most Push Networks queue the message for offline devices (e.g. no connection, no roaming or device switched off). Once they are back online the message are delivered. Since these messages can become stale the Push Network allow to specify an expiry time.

Supported client platforms

Initially we are supporting the following platforms:

  • Android
  • iOS

Note: The above platforms includes hybrid containers, such as Apache Cordova!

In the future we may add support for more platforms, such as:

  • Firefox OS
  • Blackberry
  • Windows

NOTE: One thing to have in mind, that there will be (eventually) a JS API, which allows a server to deliver messages to a JS application, deployed on any phone. However, it may take very long to get a unified standard, that works accross the different devices. Platforms like Firefox OS address this already, but only for one specific device type

Web Push

The Web Push allows a low-latency message exchange between connected (read: online) clients and the server. This is usually realized with technologies like WebSocket (or robust fallbacks like SockJS). Once a client application connects, it can exchange (receive and send) messages with the server (and other clients). Messages have no restrictions in terms of size of content (JSON, binary). While technoques like SockJS provide a socket connection between the client and the server, it is desired to have a more high-level API, to be used for the communication (e.g. Stomp).

Initially, Clients that are offline are NOT receiving messages. Messages are not persisted and stored, to be delivered later.

Supported client platforms

  • Android (Java client library)
  • iOS (ObjC client library)
  • JavaScript (JS client library, to be used in browsers and hybrid containers)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment