Domanda

Non sono sicuro dello stack migliore per creare un'applicazione di chat.Attualmente sto pensando a due opzioni principali:

  • Tornado di Facebook
    • contro:non utilizza il protocollo di chat principale xmpp ma pubsubhubbub
    • professionisti:mi piace molto la sua semplicità di sviluppo (webserver + webframework);pubsubhubbub sembra anche più semplice come protocollo di xmpp;e conosco Python
  • xmpp + bosch, punjab, ejabberd
    • contro:non so l'erlang;nel complesso sembra un po' più difficile da sviluppare
    • professionisti:utilizza il protocollo xmpp

L'app di chat dovrà avere quanto segue:

  • Messaggi privati
  • Sale pubbliche
  • Stanze private
  • Cronologia chat per le stanze virtuali (non per sempre, solo gli ultimi n messaggi)
  • incorporamento html
  • URL della chat room

Entrambe le opzioni sembrano scalabili, quindi non è una mia preoccupazione (stiamo pensando di eseguire l'app anche su ec2 di Amazon).So che esiste un progetto che crea un server xmpp utilizzando Tornado ma non è pronto per l'uso in produzione e la nostra scadenza non è così grande.Fondamentalmente la mia preoccupazione principale è la facilità di sviluppo rispetto al pentirmi in qualche modo di aver utilizzato pubsubhubbub per sviluppare un'app di chat, ma ho letto da qualche parte che PubSubHubbub potrebbe eventualmente sostituire XMPP poiché REST ha sostituito SOAP, quindi cosa ne pensi?

È stato utile?

Soluzione

Scegli XMPP.

Fuori dagli schemi, ejabberd supporta tutte le tue esigenze.Non avrai bisogno di vedere alcun erlang e scrivere moduli personalizzati per ejabberd.E con Strophejs, XMPP nel browser (che è quello che apparentemente stai facendo) è fantastico.

Per la tua ultima domanda sulla sostituzione di pubsubhubbub XMPP, non contarci.XMPP ha più di 10 anni, è un solido open source e implementazioni interoperabili proprietarie sia su client che su server, ed è elegante, quindi non scomparirà.

E stai sviluppando un'applicazione di chat che è lo scopo per cui è stato creato XMPP.

Altri suggerimenti

Facebook Tornao non utilizza affatto PubSubHubbub!

Scegli XMPP, è stato progettato per quello che stai cercando.Tornado non è stato progettato specificatamente per questo, ma per lunghe richieste di sondaggi in generale.

Non c'è bisogno di usare Punjab, il modulo http-bind ejabbed ora fa un ottimo lavoro.Inoltre, non è necessario imparare Erlang, nello stesso modo in cui non è necessario imparare C quando si scrive una webapp che utilizza Apache :) Dai un'occhiata a cose come Aristochat.L'unica cosa con cui dovrai giocare è la configurazione del tuo server XMPP e delle chat room, e poi Javascript per il lato client (nel browser).

Se non hai bisogno della federazione tramite XMPP ma vuoi prototipare e distribuire rapidamente insieme alla scalabilità immediata, dai un'occhiata all'esempio di un framework web Lift server di chat in una pagina di codice.

PubSubHubbub(PuSH) non è mai stato pensato per le app di chat in primo luogo.A volte viene definito "IM per il Web".Ti suggerisco di leggere questa diapositiva: Realtime Ruby per il Realtime Web di igrigorik

La domanda è davvero: quanto tempo reale vuoi ottenere?Se desideri velocità, XMPP è l'opzione migliore (500 ms) mentre PuSH dipende dal tuo feed e da come viene trasmesso.Ricorda, con PuSH sono necessari un totale di 4 passaggi di rete prima che il contenuto raggiunga l'abbonato.

Il problema ancora più grande è che PuSH si basa su HTTP Post.Anche se finisci per progettare un'app di chat basata su PuSH e, in una fase successiva, desideri renderla disponibile su altri dispositivi o anche come applicazione desktop, dovresti trasmettere lo stesso contenuto utilizzando XMPP.L'altro punto in cui perderai è che sarebbe molto difficile per gli utenti della tua app di chat accedere da qualsiasi altro IM di loro scelta.

Potresti utilizzare un'API REST con WebSocket per implementare un'architettura editore/abbonato.

Atmosfera E prese spavalde sono dei bei framework Java che puoi inserire nel tuo Maglia REST api e raggiungi questo obiettivo.

Il blog del creatore di Atmospehre, jfarcand, ne ha uno esempio di applicazione di chat costruito con queste tecnologie.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top