My favorites | Sign in
Project Home Wiki Issues Source
Search
for
SimplePush  
This page introduces SimplePush
Featured, Phase-Requirements
Updated Feb 3, 2011 by enrique....@gmail.com

Introduction

Back in 2003 I realized the importance of Push in mobile. But Push has been a "closed" feature. As such I have been wanting to build a Push framework for mobile devices which as the project name implies is simple (but effective).

Details

SimplePush is a client and server infrastructure that allow developers to embed (and leverage) Push functionality into their applications using a simple yet flexible API, XML or JSON for data-exchange, and well-known TCP port numbers.

SimplePush (shall) expose the following characteristics:

  • Asynchronous messaging;
  • Use of compact but standard data-exchange formats;
  • Occurs over well-known communication channels, both plain and secure;
  • Work on clients that lack public IP visibility;
  • Allow endpoints to publish (Push) messages (one to many);
  • Allow endpoints to register or subscribe to receive Push(ed) messages using a simple filtering mechanism;
  • Must be CPU and battery-friendly.
  • Integrates with native notification systems for for Android, iPhone, JavaScript, other;

Messaging is asynchronous

Sending and consuming pushed messages shall be an asynchronous operation.

Use of compact but standard data-exchange formats

SimplePush defines to data-exchange schemes a) XML, and b) JSON. The data-exchange message format is described in the Data-Exchange Format wiki page.

Occurs over well-known communication channels

SimplePush shall support transport over HTTP (port 80) against resource /SimplePush.The IANA-registered "well known" ports for SimplePush shall be supported:

simple-push     3687/tcp   simple-push
simple-push     3687/udp   simple-push
simple-push-s   3688/tcp   simple-push Secure
simple-push-s   3688/udp   simple-push Secure
#                          C. Enrique Ortiz -- January 2003

SimplePush ports 3697 and 3688 allows for SimplePush-specific routing. For example, in Java ME/PushRegistry API, for local transports,and for SMS-based messaging.

Work on clients that lack public IP visibility

Since mobile clients IP addressability typically are dynamic, restricted to a specific subnet and translated are not publicly visible. For this reason SimplePush uses a surrogate architecture and push-pull to simulate Push.

Allow endpoints to register or subscribe to receive Push(ed) messages

Endpoints wanting to received Push messages can subscribe to receive messages. Registration is based on the concept of "owners", "queues" and "tags" which are used for filtering. The concept of owners, queues and tags are covered in the About Owners, Queues and Tags page.

Allow endpoints to publish (Push) messages

Endpoints wanting to push messages out to do by creating messages which are appropriately authoring i.e. "tagging" and "queuing" messages. The concept of owners, queues and tags are covered in the About Owners, Queues and Tags page.

Provide APIs for Android, JavaME and iPhone

The SimplePush API for mobile endpoints shall exposed as libraries for Android, iPhone and Java ME. See the SimplePush for Android, JavaME, and iPhone pages for more information.

Must be CPU and battery-friendly

Because of resource constraint nature of mobile handsets, SimplePush must be CPU and battery-friendly. SimplePush must be configurable and shall implement a fast/cheap algorithm to discover push messages and investigate the use of dynamic algorithms for such discovery, based on message priority techniques.

Comment by shahi.su...@gmail.com, Jun 14, 2013

Has anyone thought of exploiting JSONP's callback capability to achieve this?


Sign in to add a comment
Powered by Google Project Hosting