Ho notato che alcuni dei miei siti ajax-heavy (quelli che visito, non quelli che ho creato), hanno certe funzionalità di auto-aggiornamento. Ad esempio, in GMail, se ricevo un nuovo messaggio, vedo il nuovo messaggio senza ricaricare la pagina. È lo stesso con il client di messaggistica istantanea basato su browser di Facebook. Da quello che posso dire, non ci sono applet java che gestiscono l'associazione server-browser, quindi sono lasciato ad assumere che sia fatto da AJAX e forse da qualche elemento di cui non sono a conoscenza. Quindi, la mia ipotesi migliore, è fatta in due modi:Reverse AJAX? Le modifiche ai dati possono essere "PUSHED" per lo script?
Il javascript fa un "ping" stabile a uno script lato server, la verifica di eventuali aggiornamenti che potrebbero essere disponibili (il che spiegherebbe perché alcuni di queste pagine portano a galla qualsiasi altra pagina pesante). oppure
Il javascript si blocca e uno script sul lato server in realtà "Spinge" qualsiasi aggiornamento al browser. Ma non sono sicuro che sia possibile. Immagino che ci sia una sorta di funzione AJAX che fa ancora ping, ma tutto ciò richiede semplicemente "eventuali aggiornamenti?" e lo script del server ha un semplice booleano che dice "no" o "Sono contento che tu abbia chiesto". Ma se questo è il caso, qualsiasi modifica dei dati dovrebbe richiamare direttamente lo script in modo che abbia i cambiamenti dei dati pronti e apporti la modifica a quella funzione booleana.
Quindi è possibile/fattibile/come funziona? Immagino qualcosa del tipo:
Qualcuno invia un aggiornamento email/IM/DB al server, il server chiama lo script utilizzando l'URL dello script più alcune variabili GET rilevanti, lo script annota la modifica e aggiorna la variabile "aggiornamenti disponibili" , l'AJAX ottiene la risposta che ci sono in effetti degli aggiornamenti, l'AJAX esegue le sue normali funzioni di "pagina di aggiornamento", che esegue i normali script di aggiornamento e li trasmette al browser.
Chiedo perché sembra davvero inefficiente che il js stia facendo solo un controllo costante che richiede a) il server di fare il lavoro ogni 1,5 secondi, eb) il mio browser di fare il lavoro ogni 1,5 secondi solo così che sul mio capo Posso dire "Oh ragazzo, ho ricevuto un messaggio istantaneo, proprio come un vero client di messaggistica istantanea!"
Wow, ho persino usato le stesse frasi. è quasi imbarazzante.Ma la mia ricerca iniziale su come farlo in PHP menziona script infiniti. Un ciclo infinito deve svolgersi da qualche parte lungo la linea per far funzionare questo tipo di cose? Perché l'origine dati effettivamente modificata (server IMAP, DB, file txt e così via) non può far scattare lo script e gestire le cose? – Anthony