Comment mettre en place un système de discussion moderne

J'ai besoin de développer une application hybride qui, en tant que fonctionnalités, implémente une messagerie instantanée. Les caractéristiques doivent être:

  • chat individuel
  • list de tous les users en ligne dès maintenant
  • Message hors ligne: un user en ligne recevait tous les messages
  • gérer un message d'envoi d'échec lorsque la connection est en panne

La plate-forme doit pouvoir gérer 10 000 à 500 000 users

J'ai vu maintenant il existe de nombreux protocoles: xmpp, mqtt, amqp avec beaucoup de plate-forme / cadre: ejabberd, rabbitmq etc.

Combien de mises en chantier d'aujourd'hui implémentent le chat dans leur application? (c'est-à-dire: Tinder) Il est préférable d'utiliser ejabberd ou, par exemple, de mettre en œuvre avec socket.io?

Il existe plusieurs solutions aujourd'hui mais je ne sais pas qui est mieux et quelle technologie utilise aujourd'hui le démarrage.