Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Semplice chat con ajax e servlet

    Ciao a tutti,
    una domanda.. per fare una semplice chat con ajax e servlet, qual'è la tecnica che si usa?
    mi spiego meglio: lato client si usa la tecnica del long polling, ma lato servlet??
    Se l'utente A deve inviare un mess all'utente B, come si gestisce sul server?
    Secondo voi tutte le sessioni debbano comunicare tra loro?

    Grazie,
    Ottavio

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,327
    Premesso che le sessioni non dovrebbero mai comunicare tra di loro (ciascuna sessione è dedicata ad un solo client), tutto ciò che devi fare lato client è usare AJAX per interrogare il server sull'arrivo di eventuali messaggi.

    Il server, ricevuta la richiesta, verifica su una sua coda di messaggi (che sarà memorizzata a livello di ApplicationContext, quindi condiviso da tutte le sessioni) se vi sono messaggi. Se ve ne sono, li invia al client che ha fatto la richiesta, altrimenti invia una risposta negativa.

    Se hai deciso di intraprendere la strada del long-polling, allora il server non invierà una risposta negativa, ma attenderà l'arrivo di qualche messaggio (o lo scadere di un certo timeout) prima di rispondere al client.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Originariamente inviato da LeleFT
    Premesso che le sessioni non dovrebbero mai comunicare tra di loro (ciascuna sessione è dedicata ad un solo client), tutto ciò che devi fare lato client è usare AJAX per interrogare il server sull'arrivo di eventuali messaggi.

    Il server, ricevuta la richiesta, verifica su una sua coda di messaggi (che sarà memorizzata a livello di ApplicationContext, quindi condiviso da tutte le sessioni) se vi sono messaggi. Se ve ne sono, li invia al client che ha fatto la richiesta, altrimenti invia una risposta negativa.

    Se hai deciso di intraprendere la strada del long-polling, allora il server non invierà una risposta negativa, ma attenderà l'arrivo di qualche messaggio (o lo scadere di un certo timeout) prima di rispondere al client.


    Ciao.
    Grazie 1000 @LeleFT,
    quindi tu suggerisci una sorta di code JMS?

    Ciao
    Ottavio

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,327
    Sì, come vuoi.
    Un'alternativa interessante potrebbe essere quella di usare una tabella di un DB in cui memorizzare i messaggi. In questo modo, il server potrebbe semplicemente interrogare la tabella del DB ogni tot secondi, con una query che recupera solo i messaggi "pubblici" (se previsti dalla tua applicazione) e quelli destinati al richiedente.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.