2009-08-15 5 views
0

Ich möchte einen Teil einer Webseite dynamisch für alle Benutzer aktualisieren, wenn ich dies gewählt habe (über eine separate Seite).Dynamische Aktualisierung eines Teils einer Seite für alle Benutzer

Das Szenario Ich denke an:

  1. sagen, dass es eine Chat-Box und ein Bild auf einer Seite.
  2. Wenn ich auf eine Schaltfläche auf einer anderen Seite (oder das gleiche) klicke, ändert sich das Bild zu einem eingebetteten Youtube Video für alle Benutzer auf der Seite im Chat.

Was ist der beste/einfachste Weg, dies zu tun?

+0

Ich plane regelmäßige JS-Anfragen vom Client für das Update zu verwenden. – stringo0

Antwort

2

Sie müssen entweder den Client abfragen (dh regelmäßig AJAX-Anfragen an den Server senden, um nach Änderungen zu suchen) oder Comet verwenden: im Grunde eine langlebige Anfrage, die eine offene Verbindung zum Server und nur zum Server hält gibt entweder zurück, um die Anforderung abzubrechen (zu diesem Zeitpunkt führt der Client eine andere Anforderung aus) oder es gibt eine Änderung.

Beachten Sie, dass wenn Sie dies mit einer beliebten Website tun, müssen Sie in der Lage sein, mit einem Los von simultanen Verbindungen zu bewältigen. Der Ansatz "Ein Thread pro Verbindung" ist wirklich ärgerlich, wenn Sie zehntausend Verbindungen gleichzeitig benötigen. Sie möchten diese Anfragen im Prinzip asynchron ausführen können. Wie Sie dies erreichen, hängt von Ihrer Serverplattform ab.

+0

Ich überlege gerade, ob ich Javascript/Ajax dafür benutzen soll - gibt es Vorteile bei der Verwendung von Comet? – stringo0

+0

Komet ist eine Technik mehr als eine Technologie für sich. Sie würden immer noch Javascript/AJAX verwenden, aber Ihre AJAX-Anfrage würde hängen bleiben (auf dem Server), bis entweder eine Änderung erfolgte oder die Anfrage abgelaufen ist. –

2

Ich würde nicht "Comet" verwenden.

Es ist fast sicher nicht notwendig für dieses Update sofort für alle Leute, die die Website anzeigen.

Um ganz ehrlich zu sein würde ich wahrscheinlich schleichen dieses Update es, wenn Sie aktualisieren, was auch immer andere Daten sie aktualisieren (sagen wir, die Chat-Protokolle). Sie würden das Video also als "nächsten" Live-Artikel für dieses Segment markieren und der Code, der den Chat bereits aktualisiert, würde diesen Wert ändern, wenn er feststellt, dass ein neuer benötigt wird.

+0

Es mit den Chat-Logs zu integrieren ist eine gute Idee ... aber für reaktionsschnelles Chatten vermute ich, dass du etwas wie Comet an erster Stelle haben willst :) –

+0

Dem widerspreche ich, aber ich denke, bevor wir definitiv was beweisen konnten Methode ist besser, wir müssten Implementierungen vergleichen: P –

+0

Nun, Sie haben nicht gesagt, wie Sie die Chat-Seite in einer reaktionsschnellen Art und Weise implementieren würde, so dass es auch in der Theorie nichts zu vergleichen gibt. Natürlich, wenn Sie eine direkte Verbindung von einem Java-Applet oder etwas Ähnlichem öffnen, ist das anders - aber mit reinem HTML + JS wäre es interessant zu hören, wie Sie Chat ohne hängende Anfrage funktionieren lassen . –