Different between GenStage & Ejabberd

I would like to know what’s the difference between what we can do with Ejabberd, and we cannot do it in GenStage.

I’m still new in elixir/phoenix, I’m just wondering, elixir with genstage seems also able to accept a millions of connections. Can anyone highlight the big difference and when we should use it?

Does the user who are using web / mobile, will get the performance impact if we are using a different approach?

Let’s say we can separate into 3 different levels.
First level: 100k users
Second level: 1million users
Third level: 10 million users
*one user might having a lot connections


These are like apples and oranges. ejabberd is implementation of XMPP server and GenStage is just library for stream processing.

1 Like

Thanks, but as far I as I know, by default phoenix with genstage, can do something like what ejabberd does as well right? for example, presence, typing, pubsub and etc.

No and no. Phoenix do not use GenStage at all. Phoenix uses Phoenix.PubSub for process registration and message passing between different instances.

Hmm, how about maybe i should change the way i ask:

We can use phoenix default and creating a chat app (which is websocket?), we also can use ejabberd module as well, what’s the difference?

performance? protocol? reliability? Is there a huge diference?

You might try MongooseIM, written in Erlang, and support XMPP.

Also GenStage & Ejabberd are not like apples and oranges, both share the same shape… it’s more like apples and bananas :slight_smile: