Implementare una chat come ti è stato suggerito è semplice ma discretamente inefficiente. In particolare, continuare a interrogare il server ogni secondo (tramite AJAX per esempio) causa una mole molto grande di traffico inutile verso il server quindi non è una buona soluzione se si vuole scalare verso l'alto e gestire molti utenti.
Per risolvere questo problema ci sono varie tecniche:
- fai long polling. In pratica funziona così: il client fa una get verso il server (AJAX va benissimo) ma questo non risponde fin quando non ha dei dati utili per il client. Nel frattempo lascia il socket aperto e ci scrive asincronamente quando il dato è pronto. Non appena il client riceve il dato, aggiorna la UI e fa immediatamente partire una nuova richiesta in un loop continuo (c'è una variante a questo tipo di implementazione, tuttavia il concetto è sempre lo stesso). Con questa soluzione, il server non viene inondato di richieste continue perchè il canale viene chiuso solo quando effettivamente ci sono dati. A grandissime linee, Facebook fa qualcosa di molto simile per implementare notifiche e altri aggiornamenti della parte client;
- utilizzi i web socket che sono stati implementati in Tomcat da circa un anno a questa parte e ti offrono un canale di comunicazione bidirezionale su cui client e server possono scrivere asincronamente. Ottimo per situazioni tipo chat o webgame. Attenzione che vengono usate altre porte (se non ricordo male) quindi eventuali proxy e/o firewall potrebbero incazzarsi.
Direi che la soluzione migliore è quella del long polling, molto facile da implementare se usi Java come linguaggio lato server e relative servlet.
__________________
Non c'è cosa peggiore nella vita di un programmatore di un errore che si presenta solo ogni tanto.
CONCLUSO POSITIVAMENTE CON: oldfield
|