3

I'm working on an application to providing chat service for a social site users. Before starting that, I didn't know about the XMPP protocol, and I developed almost 50% of basic chat operation in server without following this protocol. But now I want to use this protocol and one of the open source servers that are available, and throw away my own program (which is very hard for me).

I need an XMPP server which

  • is scalable
  • can handle between 10 and 15 million users
  • runs on Linux and/or Windows
  • is Open Source

I need most of their connections alive in most of the time.

We want to deliver all messages immediately even when the user is not in the application (e.g in Android by running a service activity/thread).

I need help, please introduce a Jabber/XMPP server open source program which is able to do that (and runs on Linux and/or Windows).

I need to provide a program like Nimbuzz with some difference and customization.

  • Hammer, I edited your question. Please check if I didn’t change your intentions, and edit your question if something’s wrong, or if you have more details. – unor Dec 3 '14 at 22:57
  • Thank you, It is more clear now. – Rancbar Dec 3 '14 at 23:04
6

Disclosure: I work on MongooseIM.


I recommend one of the Erlang-based servers: either MongooseIM or ejabberd. MongooseIM was originally a fork of ejabberd, but the codebases have diverged quite a bit in recent years.

These servers stand out among the other options not in terms of feature-richness (they do offer lots of features, though), but because they leverage the scalability mechanisms offered by the Erlang/OTP platform. To address your points:

is scalable

Erlang is amazingly scalable. WhatsApp is the latest poster child for Erlang scalability, but if you google around, you'll find lots more.

can handle between 10 and 15 million users

If you want to scale to millions of users, be prepared to build a cluster of beefy machines with lots of RAM (both these servers are memory-bound). There are deployments in the wild with ~2 million users that I know of. The League of Legends chat runs several federated clusters that handle 70 million users, but they're using a very heavily modified ejabberd.

runs on Linux and/or Windows

You're probably better off running on Linux. Erlang does work on windows, but I'm not sure how well large-scale applications perform on the platform.

is Open Source

Yes, both are open source, licensed under the GPL.

| improve this answer | |
  • Thank you, i searched and read some articles about MongooseIM and ejabberd and i found them amazing. BUT there is a problem and its the ERLANG language. It has very very very hard and different syntax and structures. As i said i have to add some features to server for users and write my own client app. Maybe I could use clusters (what is the best candidate for this terms). I need your help. PLEASE don't let me fail. – Rancbar Dec 6 '14 at 18:28
  • Hey Hammer -- Erlang has strange syntax, but it's not very hard to learn. Ejabberd/MongooseIM modules are quite simple to write. (process-one.net/en/wiki/ejabberd_module_development) (github.com/esl/MongooseIM/wiki/hooks-and-handlers). How much time are you willing to put in? – Simon Zelazny Dec 8 '14 at 11:10
  • I want to complete my project is ultimately up to 6 months. Edit: I started to programming the client side app. – Rancbar Dec 13 '14 at 15:14
0

ejabberd has a large number of big scale deployment and is used by Nimbuzz.

ejabberd community has started putting together a web page with use cases for ejabberd XMPP server deployments. This is only a small subset of them, that includes variants of ejabberd (Like Business edition) and only those who disclosed their use of ejabberd (I know a lot more cases that do not want to disclose using it).

Reference: Use cases page on ejabberd documentation site.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.