Domanda

Sto cercando di implementare qualcosa di simile alla chat di Facebook / Gmail. So che usano la cometa & Amp; jabber come la loro tecnologia. Ma sono confuso su un paio di cose.

  1. Ho davvero bisogno del jabber? Posso invece utilizzare una semplice tabella mysql con da, a, messaggio, inviato e recd? Ci sono inefficienze nell'uso di mysql? C'è qualche perdita di prestazione?

  2. La cometa può essere implementata usando i normali web server? Devo avere dei server speciali? AFAIK, apache + php non è in grado di gestire troppe connessioni aperte? Dovrei usare il polling semplice, questo avrà un effetto negativo sul mio sistema? Cosa posso usare out-of-the-box su webhost ordinari? (Perché se vendo l'app di chat, dovrebbe funzionare per la maggior parte delle persone.)

  3. Qual è il modo migliore (attualmente) per implementare la cometa? L'iframe infinito è una buona idea? Non passerà il timeout php dopo un po '? Sarà una soluzione cross-browser o devo scrivere alcuni brutti hack? Ciò porterà al caricamento del server? Cosa usano Gmail e Facebook per la connessione per sempre?

È stato utile?

Soluzione

Grandi domande, speriamo che questo non si perda nello stack durante il fine settimana. Se vuoi usare Flash, Kirupa ha un buon tutorial su come usare PHP e socket. Per quanto riguarda la cometa, credo che tu debba avere una sorta di implementazione del server. Ecco dove finisce la mia debole conoscenza in questo momento.

Esempio di polling semplice (jquery + asp.net) http://trappedinhoth.blogspot.com/2009/04/ ajax-jquery-chat-demo.html

Tutorial di Kirupa (prese php5 + flash 8) http://www.kirupa.com/developer/flash8/php5sockets_flash8.htm

Client di chat flash open source (google, molto altro) https://blueimp.net/ajax/

Informazioni sulla cometa http://cometdaily.com/

Non sto davvero rispondendo alla tua domanda, ti sto solo indicando più risorse. Sono molto curioso di sapere cosa risponderanno gli altri.

Altri suggerimenti

  

Ho davvero bisogno di jabber? Posso invece   usa una semplice tabella mysql con da,   a, messaggio, inviato e recd? Ci sono   eventuali inefficienze nell'uso di mysql? È   c'è qualche perdita di prestazioni?

Sì, devi usare jabber e non mysql. Puoi leggere [The End of an Architectural Era (It & # 8217; s Time for a Complete Rewrite)] [1] di Stonebraker et al per i dettagli del perché l'utilizzo di un RDBMS non è adatto.

  

La cometa può essere implementata usando regolarmente   web-server? Devo averne un po '   server speciali? ... Dovrei usare semplice   sondaggio, che avrà un effetto negativo   effetto sul mio sistema? Cosa posso usare   out-of-the-box su webhost ordinari?   Cosa usano Gmail e Facebook per la connessione di sempre?

Cometa è un termine un po 'nebuloso, ma non preoccuparti. Non hai bisogno di server speciali, non dovresti usare il polling. Puoi usare [BOSH] [2] - che è anche quello che utilizza Facebook (e sospetto che Gmail).

Usa [JSJaC] [3] (o [il mio fork su Github] [4]) sul lato client e [ejabberd] [5] sul lato server. Entrambi supportano [BOSH] [6] (e [XMPP over BOSH] [7]), il che significa che puoi stabilire connessioni HTTP direttamente al tuo server XMPP, evitare il polling e gestire carichi di traffico elevati.

I collegamenti per tutti questi sono segnalibro su http://delicious.com/petef/stackoverflow-843889

Penso che Jabber possa essere tranquillamente concettualizzato come un middleware (mamma), dove MySQL è sicuramente un backend (archivio persistente). Quindi sono mele e arance.

Nessuna delle applicazioni mega scala web2.0 può fare affidamento su RDBMS per la messaggistica in tempo reale, dati i limiti che si incontrano a causa delle garanzie ACID di un RDMBS e le sue caratteristiche di ridimensionamento. (Pensa di partizionare le tue tabelle SQL al volo per aggiungere più server per avere un'idea di solo uno dei problemi coinvolti.)

La considerazione più importante è la durata dei messaggi nel tuo sistema. Devono essere persistenti per sempre o solo durante una determinata finestra temporale. Dato che si tratta di un'applicazione di chat, molto probabilmente è la seconda. Perché non utilizzare un archivio basato sulla memoria anziché un RDBMS?

Perché dovresti usare Jabber? Bene, è una sorta di standard, quindi aprirai le possibilità di interoperabilità in futuro, anche se a questo punto non è un problema.

Ancora più importante, è un sistema che è stato in grave sviluppo per molto tempo (negli anni dei cani su Internet), quindi è certamente corretto presumere che sia (a partire da ora) e continuerà ad essere più maturo di qualsiasi cosa tu riuscire a progettare, implementare, eseguire il debug e preparare la produzione in casa.

Completamente all'oscuro della cometa, quindi nessun commento!

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