Domanda

Ho sviluppato un client di chat basato su Flash che visualizza i messaggi inviati dagli utenti appartenenti ad un gruppo con il loro nome utente e la momento della scrittura. I dati vengono memorizzati in un database mysql con il gruppo id, id utente e messaggio in modo che persiste oltre le sessioni di chat e permette agli utenti che accedono in un secondo momento per vedere le discussioni, meno di una chat, di più di una bacheca. Quando un utente scrive un messaggio che voglio i client di chat per l'aggiornamento immediatamente uno sembra essere vera chat in tempo. La mia soluzione è stata finora per includere un intervallo nel mio codice flash che chiama una pagina PHP che interroga il database per i nuovi commenti e tornare questo per Flash.

Penso che da quello che Ho letto che questo approccio si chiama polling lungo? è giusto? E 'questo abbastanza robusto per il volume? Sarei più bello a spingere i dati al client quando ci sono cambiamenti? Come faccio a rilevare questi cambiamenti? Ho guardato APE per esempio, ma io non credo che questo memorizza i messaggi in un database.

Qualche suggerimento?

È stato utile?

Soluzione

La cosa brutta di polling è, può diventare costoso abbastanza veloce.

Supponiamo, si dispone di 10000 utenti, che vogliono la chat di avere un ritardo di non più grande di 1 secondo. Poi youn sarà bombardare il server con 10000 richieste al secondo.

per le cose più piccole o cose che non devono essere aggiornati, polling è un approccio buono, dato che la sua semplice e non si può davvero sbagliare.

se questo è solo per una piccola comunità con fino a 100 persone con la chat, allora questo non dovrebbe essere il problema.

Oltre a questo, si potrebbe usare APE o Smartfox, o Red5 o un sacco di cose diverse per creare un server relay persistente, cioè un server con connessioni permanenti a tutti i clienti e le notifica di eventuali modifiche (ad esempio nuovi messaggi) .

come sempre, il mio consiglio personale è quello di utilizzare Haxe . È possibile utilizzare il videochat esercitazione per iniziare. Haxe ha una abbastanza ripida curva di apprendimento, ma penso che sia valsa la pena. Sono felice di aver lasciato sia da ActionScript e PHP dietro.

modifica ciò che si descrive non è polling lungo . Inoltre, difficilmente si può fare polling lungo con PHP, almeno se classicaly utilizzato con Apache. Apache creerà un certo numero di processi PHP. Ogni volta che arriva una richiesta, sarà cercare un processo PHP libero e lasciarlo ottenere quanto richiesto. Quando il processo di PHP è fatto, invia la schiena risposta al client. Se non esistono processi free, esso tampone domanda fino un processo diventa disponibile. Così si potrebbe bloccare completamente tutto il vostro server se si è tentato di fare polling lungo con PHP il modo classico.

Altri suggerimenti

Se si voleva notificare l'applicazione ogni volta che è stato ricevuto un nuovo messaggio, allora si dovrebbe attuare una qualche forma di applicazione sul server per monitorare il database / essere avvisati delle variazioni di esso, e quindi passare gli aggiornamenti ai client.

Questo dovrebbe essere più efficace di un semplice polling, perché se si pensa di uno scenario a basso traffico, con polling sarete bussare l'inferno fuori del server indipendentemente - in questo modo si sta solo la generazione di traffico quando c'è un motivo per ...

Quando si digita in un commento, il vostro cliente potrebbe notificare questa applicazione direttamente (tramite un servizio web) del cambiamento, e questa applicazione aiuto potrebbe quindi aggiornare il database ...

Va detto però io non sono un esperto di programmi di chat - mai stato coinvolto in una persona ...

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