Asynchronous Message Delivery and "Offline Mode"

Dave Ryan
Added over 5 years ago

Hi there,

Apologies if this has been covered already, if so, please point me there!

We're working on a mobile chat application and are using Tigase as the backend XMPP server. We're experiencing a problem where by if the user loses connectivity to the Tigase server, the connection stays alive (as the user did not shut the connection down), and messages are subsequently delivered (via the stream) but never arrive. Are there any solutions available for the WhatsApp server to facilitate some sort of delivery confirmation/receipt/ack (for server to client) for each message sent? And if a receipt is not received within a small window, the message is cached in the offline messages store? (Or something along those lines).

We've implemented a workaround that delivers messages synchronously (similar to Skype), but the user experience expects asynchronous message delivery (e.g. WhatsApp).

Any suggestions? If there is not current solution in Tigase for this, could you propose a solution? Do you add features as part of the support packs?



Replies (3)


Added by Artur Hefczyc TigaseTeam over 5 years ago

Tigase server supports XEP-0198 - Stream management extension which have the packet delivery confirmation - ACK.

Added by Dave Ryan over 5 years ago

Hi Artur,

Thanks for the quick reply. Could you advise where I can find documentation on the Tigase implementation? Also, if the ACKs are not received and offline messaging is enabled, does this mean the messages will be stored in offline mode until the stream is reestablished? Are there any potential scenarios here that could lead to message loss, or is the use of an ACK in this way likely to reach near 100% message delivery to the device?

The concern here is obviously mobile devices can switch networks and drop coverage rapidly, so we need to ensure messages are delivered with a reasonably high degree of certainty.

Many thanks,


Added by Dave Ryan over 5 years ago

Never mind, found the blog post!