Selected article

Social networking seems like an obvious application for an IM system. However, adding a web chat feature, even though, very valuable, is not all that can be done to improve social interactions on your service.

You are here

Push Notifications

By Daniel on May 28, 2014

Push technology has been recently very frequently mentioned. It is often talked about but not well understood and even less used in practice. Its full potential has yet to be realized. Unlike HTTP where users connect to the server to load (pull) data from the HTTP server, XMPP users are connected to the server all the time. As a result of being consistently connected to the server, real-time push technologies can be implemented.
But what is push or push notification? What can it be used for or what can it be useful for?

Push-based systems do not wait for input from the user or client for information to be delivered. Updates from clients or server are delivered to interested parties instantly. Often used in conjunction with PubSub (Public Subscribe) technology which is described as an XMPP extension. You could think of PubSub as something similar to a mailing list. People can subscribe to different PubSub channels and can receive notifications if something new comes up.
So why is this a big deal? Users receive notifications instantly if they are online rather than waiting for a response or a request. Not only that, but the notifications can be customized depending on many criteria of user's online status. For example, users can receive personalized notifications depending on their geographic location. Let's say: "There is a tornado going your way..." or "You entered a Tsunami hazard zone...". Of course less dramatic notifications are possible as well: "Your football team has just scored...", "There is a new article in subject you are subscribed to…".

As you can see, instant notification delivery is a positive benefit. In theory this could be replicated, more or less, through very frequent email checking. However that cannot replicate context related notifications. On top of this, checking your inbox as often would put very high load on the servers causing unnecessary traffic where in many cases there is no new information to get. Another benefit of a push-based system is that you know exactly when your notification was received by its intended target. Sure this two-way might seem like it generates extra load, but it is only when some information is to be delivered. As a result this type of service can scale very well.

Of course, there is one catch. Users receive push notifications only when they are connected over XMPP to the service. This is not always possible, especially in case of mobile devices. TCP/IP connections can go down at any time, and in fact they frequently go down because this is what mobile network providers do. They destroy idle connections to save bandwidth. However, there is a solution to this as well. It is possible to forward a notification from XMPP network to any other system in case a user is not connected. There are deployments which deliver a notification through different channels if XMPP is not available at some point such as SMS, iOS push, Android Push, even email. Failing that, messages can be stored and delivered once the user logs in.
The applications of push-based instant message systems are endless ranging from simple news channel subscription to disaster alerts, location based ads, document workflow notifications, bank account events, medical data collection, devices maintenance, and much more...