View Full Version : [JAVA/Servlet] Output "a pezzettini"
Salve a tutti,
Il mio problema è che devo spedire al client dell'output
testuale in momenti diversi, ma nell'ambito della stessa richiesta (doGet).
Ho provato a fare una prova così:
for( int i = 0; i < 10; i++ ) {
Thread.sleep(1000);
w.print(i);
w.flush();
}
ma mi stampa sul browser la stringa intera "0123..." dopo 10 secondi,
e non una cifra al secondo.
Si può fare?
Grazie
nuovoUtente86
10-03-2010, 20:34
questo deriva dal funzionamento di http che è stateless, perchè una volta consegnata la risposta si perde lo stato conversazione ed in base alle versione si chiude anche la connessione, senza aspettare un timeout.
Probabilmente la soluzione al tuo problema può essere un server-push(HTTP streaming) e/o AJAX.
A me sembra più che altro che flush non funzioni a dovere...
Potrei provare con una strategia "long polling":
nel caso della prova di prima chiedo un numero, che viene ritornato
dopo 1 secondo, poi ne chiedo immediatamente un altro, e così via.
Ma non mi sembra la soluzione ottimale.
Grazie comunque
..penso dipenda dal protocollo http prova prima del flush a mettere un carattere a capo...
Provato, non va.
Ma ho scoperto che dopo aver scritto poco più di 1000 caratteri
flush comincia a funzionare!
tomminno
11-03-2010, 20:18
ma mi stampa sul browser la stringa intera "0123..." dopo 10 secondi,
e non una cifra al secondo.
Si può fare?
Grazie
Si può fare ma non come intendi te. Il browser ovviamente mostrerà il risultato solo quando ha ricevuto l'intera risposta HTTP che avviene appunto dopo 10 secondi. Nel tuo caso l'alternativa corretta è impiegare Ajax lato client.
..scusa non avevo letto che volevi vederlo dal browser....allora mi sà che ho vai di chiamate asincrone o vai di chiamate asincrone...
Si può fare ma non come intendi te. ... <CUT> ... l'alternativa corretta è impiegare Ajax lato client.
Se vedi il msg sopra funziona, dopo aver scritto response.getBufferSize() caratteri.
Per quanto riguarda AJAX non me ne intendo, per caso fa più richieste HTTP, una per ogni "dato"?
non avevo letto che volevi vederlo dal browser
Non è che voglio vederlo da browser, era solo per vedere l'output.
In realtà lo devo leggere da un'applicazione Flex, e a tal proposito ho aperto un altro thread:
http://www.hwupgrade.it/forum/showthread.php?t=2159359
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.