Question

Je ne suis pas sûr de la meilleure pile pour construire une application de chat. À l'heure actuelle, je pense à deux options principales:

  • tornade facebook
    • contre: ne pas utiliser le principal protocole XMPP de chat, mais PubSubHubbub
    • pros: j'aime vraiment sa simplicité pour le développement (+ serveur web webframework); PubSubHubbub semble aussi plus simple comme protocole que XMPP; et je sais python
  • XMPP + bosch, Penjab, ejabberd
    • contre: ne savent pas Erlang; dans son ensemble semble un peu plus difficile à développer
    • pros: utilise le protocole XMPP

L'application de chat devra comporter les éléments suivants:

  • Messages privés
  • chambres publiques
  • Chambres privées
  • L'historique des chats pour les chambres (pas pour toujours, seulement les derniers messages n)
  • html plongement
  • URL pour salle de chat

Les deux options semblent évolutives afin que ce n'est pas vraiment mon souci (nous pensons à l'exécution de l'application dans Amazon EC2 aussi bien). Je sais qu'il ya un projet qui construit un serveur XMPP en utilisant une tornade, mais ce n'est pas prêt à l'emploi de production et notre délai est pas grand. Fondamentalement, mon principal souci est la facilité de développement vs regrettant en quelque sorte plus tard à l'aide PubSubHubbub pour développer une application de chat, mais je lu quelque part que PubSubHubbub pourrait éventuellement remplacer XMPP comme REST remplacé SOAP - alors que pensez-vous?

Était-ce utile?

La solution

Optez pour XMPP.

Hors de la boîte, ejabberd a le soutien pour tous vos besoins. Vous aurez pas besoin de voir tout Erlang et écrire des modules personnalisés pour ejabberd. Et avec Strophejs, XMPP dans le navigateur (qui est ce que vous faites apparemment) est grande.

Pour votre dernière question sur le remplacement PubSubHubbub XMPP, ne comptez pas sur elle. XMPP est plus vieux 10 années, open source solide et interopérables propriétaires implémentations à la fois sur le client et le serveur, et est élégant il ne disparaîtra pas.

Et vous DEVELOPPER une application de chat qui est ce que XMPP a été fait pour.

Autres conseils

Facebook Tornao ne marche pas du tout usage PubSubHubbub!

Optez pour XMPP, il a été conçu pour ce que vous cherchez. Tornado n'a pas été conçu pour ce specicically, mais pour de longues demandes de vote en général.

Pas besoin d'utiliser Punjab, le module http-bind ejabbed fait un assez bon travail maintenant. , Vous n'avez pas besoin d'apprendre Erlang, de la même manière que vous n'avez pas besoin d'apprendre C lors de l'écriture d'un webapp qui utilise Apache :) Découvrez des trucs comme aristochat . La seule chose que vous aurez besoin de jouer avec est la configuration de votre serveur XMPP et des salles de chat, puis, Javascript pour le côté client (dans le navigateur).

Si vous ne avez pas besoin fédération via XMPP mais ne souhaitez prototyper et déployer rapidement avec une évolutivité hors de la boîte, jetez un oeil à l'exemple du framework web de levage d'un serveur de chat dans une page de codes .

PubSubHubbub (PuSH) n'a jamais été conçu pour les applications de chat en premier lieu. Il est parfois appelé le « IM pour le Web ». Je vous suggère de passer par cette diapositive: en temps réel Ruby pour le temps réel Web par igrigorik

La question est vraiment la façon dont vous souhaitez obtenir en temps réel? Si vous voulez accélérer alors XMPP est la meilleure option. (500ms) tout PuSH dépend de votre alimentation et comment son relayée. Rappelez-vous, avec un total PuSH son réseau de 4 sauts avant que le contenu atteigne l'abonné.

Le problème encore plus grand est PuSH repose sur HTTP Post. Même si vous finissez par la conception d'une application de chat basé sur PuSH, et dites à un stade ultérieur, vous voulez le rendre disponible à d'autres appareils ou même comme une application de bureau vous devez transmettre le même contenu en utilisant XMPP. L'autre endroit vous perdre sur est qu'il serait très difficile pour votre chat utilisateurs de l'application à se connecter depuis un autre IM de leur choix.

Vous pouvez utiliser une API REST avec WebSocket pour mettre en œuvre un éditeur / architecture d'abonné.

Atmosphère et prises swagger sont bien cadre java que vous pouvez interfacer à votre Jersey REST API et y parvenir.

Le blog du créateur de Atmospehre, jfarcand, a un exemple d'application dans le chat construit avec ces technologies.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top