Mit Ajax Tabelle dauernd aktualisieren

Gast #3866974
Lesenswert?
• ▲
▼
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
(Firma: JDCC) #3866981
Lesenswert?
• ▲
▼
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.
#3866999
Lesenswert?
• ▲
▼
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
(Firma: JDCC) #3867009
Lesenswert?
• ▲
▼
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 ...
#3867634
Lesenswert?
• ▲
▼
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren