Ihr wisst sicherlich, dass Facebook sich dauernd selbst aktualisiert. Am bekanntesten ist diese rote Zahl beim oberen Menü die anzeigt wieviele neue Nachrichten es gibt oder auch nicht. Ich habe vor so etwas auch in meiner Webseite einzubauen, nur mir Tabelleneinträge. Ich habe mir dazu ein Tutorial zu Ajax angeschaut und weiß wie das alles funktioniert und so. Meine Frage ist die: Wenn ich im 500ms Intervall immer in Javascript ein php script aufrufe und damit prüfe ob eine bestimmte Variable in der Datenbank gesetzt ist oder nicht, ist es dann nicht irgendwie zu aufwendig für den Anwender? Schließlich läuft ja Javascript beim Clienten und meine Angst ist, dass dies die Performance des PC's des Clienten (wenn mehrere solcher Seiten gleichzeitig offen sind) stark beeinflussen kann. Wie macht das eig facebook wenn eine neue Nachricht einkommt? Meiner Meinung nach muss es da so eine Art dauerhafte Abfrage beim Server geben, denn der Server kann ja üblicherweise nicht automatisch, wenn sich etwas in der Datenbank ändert, sich mit dem Clientn verbinden und ein Ereignis auslösen. Das geht nicht. Kurz und bündig: Würde das den PC bzw den Browser des Clienten überbeanspruchen wenn ich mehrer solcher dauerhaften Abfragen mache? Lg
Alle aktionen gehen vom Client aus - http gibt mehr nicht her. Also zyklische Abfragen. 500 ms wären etwas deftig ... Dem Client ist das egal, aber die Anfrage an den Server muß auch durch das Web geschleust, ausgewertet und beantwortet werden. Fratzenbuch wird das über ein Timerevent im Client machen, schau doch einfach mal im Quelltext der Seite nach.
Also ich habe das auch schon selbst implementiert, der Trick ist relativ einfach, du machst einen Ajax Request auf, blockierst den aber auf dem Server, du sendest dann z.B. alle 30 Sekunden ein Leerzeichen, somit bleibt die Connection offen. Sobald du wirklich Änderungen senden willst, sendest du z.B. dein JSON Object, und schliesst die Connection. Genau dann erhält der Client die Antwort, verarbeitet die, und öffnet einen neuen Request, der dann wider vom Server blockiert wird. Ich habe den Facebook Chat noch nie genauer angeschaut, gehe aber davon aus, dass der genau so funktioniert. Andere Möglichkeit sind natürlich Websockets. (Sind relativ neu, habe ich selbst noch nie verwendet) http://de.wikipedia.org/wiki/WebSocket mfg Andreas
:
Bearbeitet durch User
Andreas B. schrieb: > Also ich habe das auch schon selbst implementiert, der Trick ist relativ > einfach, du machst einen Ajax Request auf, blockierst den aber auf dem > Server, du sendest dann z.B. alle 30 Sekunden ein Leerzeichen, somit > bleibt die Connection offen. Mache ich auch so ähnlich. Ich schicke so eine Art Progress-Bar zurück. Elegant ist das nicht ...
https://www.facebook.com/notes/facebook-engineering/under-the-hood-facebook-messenger-for-firefox/10151175913223920 fb verwendet anscheinend websockets. mit ajax alle 1s eine Anfrage ist sicherlich auch vertretbar. kommt halt auch auf die seite an, und mit wieviel besuchern man rechnet. FB muss da sicherlich mehr mit seinen Resourcen haushalten, als eine Popel-Seite mit 5 gleichzeitigen Besuchern
Facebook hält (hielt*) eine Ajax connection offen so wie Andreas es beschrieben hat. . Sieht man schön mit Firebug. *) kann natürlich sein, dass sie inzwischen websockets verwenden Gruß Roland
wenn sie auf ihrer website schreiben, das sie websockets verwenden, dann glaube ich dem erstmal ;)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.