ciao a tutti, ho aperto una discussione poco sotto su un problema analogo, ma mi è sembrato doveroso aprire un altro topic, perchè forse la soluzione è più utile del problema, mi spiego:
sto scrivendo un progetto (che sarà poi la mia tesi) php+mysql con ajax, il tutto dovrò poi interfacciarlo con un server asterisk, ma questa è un altra storia, quello che mi interessava nel topic precedente è il seguente problema:
Posso aggiornare una pagina sul client dato un evento sul server, senza dover aggiornare la pagina ogni tot secondi sul client e senza avere nient'altro che un browser pulito sul client?
M'è stato risposto chiaramente "NO" in quanto come da definizione dell'architettura client-server, il server risponde solo ad una richiesta del client.
La soluzione del refresh ogni tot secondi non mi ha convinto, così ho ideato questa, e ho bisogna della vostra onniscenza per metterla in pratica:
Mettiamo di avere un client, sul quale gira un browser il quale visualizza una pagina con ajax che fa riferimento ad un file "prova.php" residente sul server, insomma, alla pressione di un tasto sulla pagina, lo script javascript va ad effettuare la richiesta della pagina php, e fin qui è ajax duro e puro.
Quello che m'è venuto in mente è:
e se facessi un sistema che invia la richiesta e aspetta che il server risponda, posso dare l'impressione che la pagina si aggiorni tramite un evento del server? mi spiego meglio:
-Mettiamo che il client clicchi sul pulsante al tempo 0
-mettiamo che l'evento che mi interessa, accadrà sul server al tempo x
quello che voglio è che al tempo x, sul client succeda qualcosa, mettiamo che venga fuori una scritta tipo 'ciao mondo'
il problema è che le richieste http dopo un po che il server non risponde, scadono, giusto? mettiamo che scadano al tempo y (non so quanto valga)
immaginiamo questo scenario, x<y, per cui appena il client clicca sul tasto, il client stesso invia la richiesta, e sta ad aspettare la risposta.
la risposta arriva, al tempo x e siamo tutti felici.
immaginiamo quest'altro scenario, che x>y per cui il client clicca sul tasto, la richiesta viene mandata ma dopo un tempo y scade senza ricevere una risposta.
a questo punto metterei un controllo sul server, che ogni y-Δt invii la risposta al client, ma in maniera che il client invii subito una nuova richiesta in modo da aspettare l'evento..
Posto un immagine, non ho spiegato molto bene, spero si capisca...
![]()