What would be the best tools to use to create a web based chat/messaging system ? for client we have : Browser (any JS solution - preferably without using flash like in jsocket)

for server we have : PHP / Python / (node.js not sure of this one yet) scalable MySQL structure scalable MongoDB clusters scalable redis server couple of memcache servers (128GB ram each) bunch of servers with routers (socket base load balancers stage-4) zero -MQ and/or rabbitMQ

  • we will have guild chat, area chat (within Xkm) / territory chat / PM

  • we have more than 1M players, 20K concurrent/online players who will be chatting in groups

  • every group will have around 100-2k players depending on geo-location

  • clients will have mobile apps (android and iphone) and will receive push notifications if they select to (and push notifications for PMs as well)

my question is what would be the best combination of client-server technologies to use ?


  • \$\begingroup\$ If you do pick Node, consider Socket.IO. Note that "what tech to use"-questions are off-topic. What tech have you tried and why is it not working for you? \$\endgroup\$ – Anko Jul 29 '13 at 13:17
  • \$\begingroup\$ I don't know what is not related to "Game development" to ask this kind of question, it is called "GAME DEV" where you have to develop a game or a feature of a game by basically having a "Design" then "Implementation" , in between these two basic things you need a good "TECH", yes it would be bad to just ask "what should i use to build a chat room" but "whats the best to build a chat room that NEEDS to function 1,2,3,4... " IS about designing the best architecture which is a part of DEVELOPMENT in the "GAME DEVELOPMENT" website ! \$\endgroup\$ – Rami Dabain Jul 30 '13 at 2:34
  • \$\begingroup\$ You're right that "which tech to use for my game" questions are about game development. However, the problem we've found with this type of question is that the choice of technology is almost always very specific to the project. It's hard to say what answer is better, because everyone's needs are different. It's good to ask questions, but this type doesn't really suit the Stack Exchange format: We're looking for answers, not conversations. Our chat and GameDev.net are great places to take a conversation. Best of luck! \$\endgroup\$ – Anko Jul 30 '13 at 6:43

The "best" is hard to say, you should test different technologies.

I my case, I used C++ to create the server and js for client:

  • The client comunicate by ajax with the server, but never close the socket. To allow that, it should expect steaming data.
  • The server is made with C++, using a very fast http/https sub-set. When a client send a chat text, the server parse/log it/etc. and send it back to all clients (of the same chat room).

If the server detect a client is not active for a while (about 5min), it inform him and close the socket.

Python is not native executable, that mean slower code (and for 20k players you need high efficiency.

PHP has the same problem, and usually it is called by apache, that mean 1 running apache thread (which cost unnecesary memory).

| improve this answer | |
  • \$\begingroup\$ This is probably the best solution , but will require a lot of time making it scalable ? what do you think ? \$\endgroup\$ – Rami Dabain Jul 30 '13 at 2:36
  • \$\begingroup\$ To implement a good server in C/C++ take time yes, and it must be very robust. You also should take in consideration logging into files, service managmenet (process lock, service start/stop/reload, etc.) In may case it take me near 1 week. (just for server implementation, without the chat part) \$\endgroup\$ – Adrian Maire Jul 30 '13 at 8:31

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