by Nicolas Vérité
SSE for server to client real-time push
SSE stands for Server-Sent Events, it is a W3C recommendation where a browser receives automatic updates from a server via HTTP connection. It is for mobile and web developers using the MongooseIM REST API. It is not intended to be used with XMPP connections (TCP, websockets, BOSH).
The problem with a simple REST API is that it is polling only: the client has to continuously poll the server at regular intervals, even when there is nothing to expect, “just in case”. This regular polling consumes a lot of battery on the client and bandwidth both on the client and server, all for nothing. Also, this introduces some delay, as data can be made available on the server between the polling interval.
SSE allows a very simple and basic push from server to client, with just a tiny library to use in your app. SSE is very easy to integrate on the client, saves battery and bandwidth, and is fully real-time (no delay).
Improved Cassandra for MAM
Sysadmins and devops will love the return of support for the Cassandra database.
Our support for Cassandra in versions below 2.0.0 was average. Sometimes it was slow, and it had limited support of MAM (Message Archive Management) specifications, so we decided to remove it and bring it back once it was fully production ready.
Now MongooseIM supports Cassandra again, with optimised code and improved support for MAM, and it comes bundled with a migration tool. Cassandra for MAM in MongooseIM is now faster and easier to upgrade.
HTTP file upload
This will help all app makers.
The file exchange in XMPP is usually and historically off chats: it is made with a synchronous user experience, with an offer and an acceptation or refusal whereby you have to wait for the other party to accept or refuse. In many cases there are failures due to timeouts.
The solution is an asynchronous user experience: you send files in chats, whether your contacts are online or not, available or not. You now have a single timeline with text messages and (links to) media files. It is also compatible with archiving.
Further improvements
MUC hibernation
All the old and inactive MUC rooms are now hibernated and eventually flushed out of memory, which saves a significant amount of memory on the cluster.
ODBC/RDBMS backend for MUC light
MUC light was only available on Mnesia, now it can also be stored in MySQL or PostgreSQL.
Simplified MAM configuration
Before, MAM had to be configured in many ways in multiple places. Now, it is done in one central place, and there is fewer things to configure.
Changelog
Please feel free to read the raw changelog, you can even follow links and find the code changes.
Special thanks to our contributors!
Special thanks to our contributors: @kenstir, @sstrigler, @igors, @bernardd, @msantos!
Next?
From 2.0.0 to 2.0.1: please upgrade!
Version 2.0.1 will probably be the last of the 2.0.x series, unless major issues are found. As this is a massive improvement, we advise everyone to upgrade.
We are now focusing on the development of the 2.1.x series. This will deliver even more value to mobile developers and sysadmins.
Mobile clients: social and groups
We are planning to release open source iOS and Android clients. Please do not expect market killer apps. The aim is very limited: we want to provide a technology and use case demonstration.
Mangosta iOS and Mangosta Android will deliver very basic group chat and social network. For example, these will not be distributed on mobile app stores, they will only be available as source code on our repositories.
Flexible push notifications
You can expect more improvements on the push notifications front. We have now an existing generic mod _ http _ notification, we will add push to Amazon SNS (Simple Notification Service) and XEP-0357: Push Notifications.
Peer to peer or mediated binary streaming
We will deliver an ICE/STUN/TURN server, coded in Elixir, to allow peer to peer and one to one media streaming, like voice, video, screen sharing, and whiteboarding. The signalling part, named Jingle, is already available.
Call for action
Star our repo: github.com/esl/MongooseIM Follow us on Twitter: twitter.com/MongooseIM& twitter.com/ErlangSolutions
Go back to the blog