J
J
JustStas2013-09-05 10:11:09
PHP
JustStas, 2013-09-05 10:11:09

Messages and notifications in a busy system

There is a task to develop a server part for a mobile application and a website. The main part of the server API will be developed based on nginx + php-fpm and MariaDB. Among other things, you will need the functionality of sending notifications to clients and quick messaging between clients. All this should be realtime (well, or almost realtime). Messages need to be stored in the database so that, if necessary, it is possible to get them from the main api. The problem is that I can not decide on the choice of technologies for the implementation of these messages / notifications. It is assumed that there will be quite a lot of online customers (it is difficult to say the exact number now, but according to the bold expectations of the customer, it can eventually reach 100k). The messages themselves will be sent relatively infrequently and they will be small.

At first I thought about writing a bicycle on nodejs. Web clients via socket.io, mobile clients via raw tcp socket. Can be scaled by running multiple node instances. Knowing the user ID, you can determine on which instance it hangs.

Then they threw in the idea of ​​using XMPP and ejabberd. On the one hand, it sounds tempting, on the other hand, there are some doubts about the appropriateness of such a decision. And there was no experience with ejabberd at all. Knowledge about Erlang is very superficial.

In general, due to the lack of practical experience in the development of similar ones, I cannot decide on the choice of means of implementation. Perhaps there are even more effective ways to solve this problem that I don’t know about at all. I would be very grateful if you advise what exactly to choose and how best to implement.

Answer the question

In order to leave comments, you need to log in

2 answer(s)
M
Max, 2013-09-05
@AloneCoder

RealPlexor?

I
IgaIst, 2013-09-11
@IgaIst

Tornado
ReactPHP

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question