There is a chat project I plan to develop and currently stuck while deciding, which XMPP server and client to use. Front-end will be implemented using Ionic 3+ framework (fixed requirement).
Main features:
- private chat capability (1 on 1)
- group chat capability (and ability to add users to existing chat)
- online status visibility
- offline message delivery (online user sends a message to offline user, and the offline user gets it after going online, etc)
- full-time server-side chat history storage
I need to select:
- a client library which is convenient to implement with Ionic 3+
- a server which enables all the above requirements
Also, the chat messages should cross the network with at least some kind of encryption.
Currently, I have been playing with these server options:
- eJabberd - most people recommend this option, but for me, a person, who is newbie at XMPP stuff, it looks like there will be quite a lot of hassle with configuration
- openFire - easy to setup and use, but it uses Java VM, and some people argue, that it has problems with performance and memory management.
I also stumbled upon AstraChat - a commercial product, that looks similar to what I need - however, with fixed implementation of it's own public apps - no way to use it's code base.
As of front-end - I have only tried running the Ionic 1 tutorial locally using Strophe.js as the client in the front-end. Since I am developing the app with Ionic 3+ (TypeSript), it would be awesome to use some newer and TS compatible library - however, it is just a wish, not a requirement. :)
Maybe there are some better and more convenient non-XMPP implementations for this concept. Any thoughts are welcome!