Ich habe festgestellt, dass einige meiner ajaxlastigen Sites (die ich besuche, nicht die, die ich gebaut habe) bestimmte Auto-Refresh-Funktionen haben. Wenn ich beispielsweise in Google Mail eine neue Nachricht erhalte, sehe ich die neue Nachricht ohne Neuladen der Seite. Dasselbe gilt für den auf Facebook basierenden IM-Client. Soweit ich das beurteilen kann, gibt es keine Java-Applets, die die Server-Browser-Bindung behandeln, also muss ich annehmen, dass es von AJAX und vielleicht einem Element, das mir nicht bekannt ist, gemacht wird. Also durch meine beste Vermutung, ist es in einer von zwei Arten erfolgen:Reverse AJAX? Können Datenänderungen zum Skript "PUSHED" sein?
Die Javascript tut ein stetiges „ping“ zu einem serverseitigen Skript für alle Updates überprüft, die verfügbar sein könnte (was, warum einige erklären würde, von diesen Seiten bringen andere schwere Seiten zum Crawlen). oder
Das Javascript sitzt untätig und ein serverseitiges Skript "pusht" tatsächlich alle Aktualisierungen an den Browser. Aber ich bin mir nicht sicher, ob das möglich ist. Ich könnte mir vorstellen, dass es eine Art von AJAX-Funktion gibt, die immer noch pingt, aber alle fragt einfach "irgendwelche Updates?" und das Server-Skript hat einen einfachen booleschen Wert, der sagt "nein" oder "Ich bin froh, dass du gefragt hast". Wenn dies jedoch der Fall ist, müssten alle Datenänderungen das Skript direkt aufrufen, so dass es die Datenänderungen bereithält und die Änderung an dieser booleschen Funktion vornimmt.
So ist das möglich/durchführbar/wie es funktioniert? Ich stelle mir etwas wie:
Jemand sendet eine E-Mail/IM/DB-Update auf den Server, der Server ruft das Skript mit der URL des Skripts plus einige relevante GET-Variable, das Skript notiert die Änderung und aktualisiert die Variable "Updates verfügbar" , der AJAX erhält die Antwort, dass es tatsächlich Updates gibt, der AJAX führt seine normalen "update page" -Funktionen aus, die die normalen Update-Skripte ausführen und sie an den Browser ausgeben.
Ich frage, weil es wirklich ineffizient scheint, dass die js nur eine ständige Kontrolle zu tun, die a) den Server arbeiten alle 1,5 Sekunden zu tun erfordert, und b) mein Browser arbeiten alle 1,5 Sekunden zu tun einfach so, dass an meinem Ende Ich kann sagen "Oh Junge, ich habe eine IM! Genau wie ein echter IM-Client!"
Wow, ich habe sogar die gleichen Schlagworte verwendet. das ist fast peinlich.Aber meine erste Suche, wie man das in PHP macht, erwähnt Endlos-Loop-Skripte. Muss irgendwo auf der Linie eine Endlosschleife stattfinden, damit diese Art von Dingen funktioniert? Warum kann die tatsächlich geänderte Datenquelle (IMAP-Server, DB, TXT-Datei, was auch immer) nicht das Skript dazu veranlassen, aufzuwachen und mit den Dingen umzugehen? – Anthony