Was ist der beste Weg, Server Push für mehr als eine Sache zu implementieren.Wie Server Push für mehr Werte auf einmal implementieren?
Sagen wir, ich möchte nur den Benutzerstatus aktualisieren, so dass ich regelmäßig den Server für Status in 1000ms abfragen und die Seite aktualisieren kann. Der andere Weg, den ich finden kann ist, dass der Server wie 30 Sekunden wartet, während es prüft, ob es irgendwelche Änderungen gab und wenn man gefunden wird, Push-Antwort zurück zum Client, die Seite aktualisieren und dann eine weitere Abfrage machen.
Aber wie würde ich dies implementieren, um für 10 Dinge auf der Website zu überprüfen? Zum Beispiel, wenn ich Stackoverflow mag Frage Stimmen zu aktualisieren, wenn jemand Stimme, aber der einzige Weg, wie dies zu tun, die ich von
ist denken kannfragen Server für Stimmen für jede Frage -> Server antwortet mit Stimmen jeder Frage auf der Seite
aber wie kann ich herausfinden, welche Frage Stimmen geändert haben? Ich könnte alle aktuellen Stimmen senden und dann Server die Werte vergleichen und nur mit denen, die sich geändert haben, antworten, aber ich denke, dass es sehr uneffektiv wäre, dies zu tun, während man nach 30 Werten sucht.
Ein Beispiel für alle wäre Facebook, wo fast alles durch Server Push aktualisiert wird, aber wie kann Server herausfinden, was sich geändert hat und was nicht?
Alles was ich gefunden habe (einschließlich meines Buches "Ajax Patterns") erklärt nur, wie man nach einem Wert fragt, aber ich habe nichts gefunden, wie man für viele Werte gleichzeitig abfragt (wie mehr als 10).
aber wie weiß der Server, dass sich etwas geändert hat? Der einzige Weg, an den ich denken kann, ist, alle Änderungen zu protokollieren und dann all jene zu beantworten, die der Client nicht hat ... wie wenn der Client # 5000 hat, dann zwei andere Leute "Kommentar hinzufügen", also seine # 5002 und wann Der erste Client fragt nach Neuigkeiten, der Server muss alle Änderungen seit # 5000 erhalten, aber ist das nicht effektiv? –
Ah ja, es gibt einen Unterschied zwischen einer globalen Versionsnummer und was ich vorschlagen soll. Eine globale Versionsnummer wird vom Server beibehalten und erhöht, wenn sich etwas (irgendetwas) ändert. Ich denke, das ist ein bisschen chaotisch, da Sie keine Datenmengen haben könnten. In der Sitzung des Benutzers auf dem Server, ID speichert den Zeitstempel der letzten Anfrage nach dem Server und seine ID-Nummer, wie vom Client zur Verfügung gestellt. Solange der Zeitstempel des letzten Updates irgendwo auf dem Server gespeichert ist (sagen wir mal den Zeitstempel der neuen Nachricht), können Sie leicht von einer eingehenden Anfrage aus sehen, was sich geändert hat. – gubby