2009-06-04 11 views
5

Ich habe gerade von der AJAX Push Engine erfahren, aber sie läuft unter Linux/Apache, was für mich keine Option ist.Wie können Sie Daten an einen Webseiten-Client senden?

http://www.ape-project.org/

mit AJAX Zeit eine Seite aktuell halten wir den Server häufig abzufragen haben, die für eine hohe Verkehr Website ist nicht groß. Die Option, Daten nur bei Bedarf zum Client zu übertragen, ist eine großartige Option, aber nativ unterstützt JavaScript keine Sockets, AFAIK. Ein Trick, über den ich gelesen habe, aber die Seite ist jetzt weg, soll ein Flash-Modul verwenden, um Socket-Kommunikationen zu behandeln und Nachricht an JavaScript weiterzuleiten.

Das Problem mit der Erforschung dieses Ansatzes ist, dass "JavaScript Push" als Schlüsselwörter mit der Push-Funktion für Arrays statt den Kontext, den ich will.

Wie konnte eine dauerhafte Verbindung mit dem Server hergestellt werden, um die Kommunikation im Browser zu pushen? Benötige ich Flash/ActionScript oder gibt es eine andere Option, die mit allen derzeit aktiven Browsern funktioniert? (IE6/7/8, FF3, Safari, Chrome)

Wenn es um den Server geht, muss ich auch die Komplikationen aufgrund der Herkunft Politik sowie Port-Sicherheit zu erarbeiten. Ich schätze alles, was Sie hervorheben können, um die verfügbaren Optionen zu erklären.

+0

ich einige ähnliche Fragen gefunden, die einige Antworten führen ... und mehr Fragen. :) http://stackoverflow.com/questions/471780/asp-net-http-server-push-to-client http://stackoverflow.com/questions/50831/how-to-push-data- zu-verschiedener-Client-Typen-in-nahe-Echtzeit http://stackoverflow.com/questions/219868/client-notification-should-i-use-an-ajax-push-oder- Umfrage http://stackoverflow.com/questions/847227/real-time-chat-with-push-notification – Brennan

Antwort

0

Dies ist interessante Sachen, aber ich habe nichts über Skalierbarkeitsprobleme auf diesen Wiki-Seiten gelesen. Was macht ein Webserver, wenn 10.000 offene Long-Polling-Verbindungen bestehen?

Auch für diejenigen, die nicht mit den zugrunde liegenden Konzepten vertraut sind, ist es wichtig zu verstehen, dass das pushen von Daten vom Server zum Client in einer Ad-hoc-Art unmöglich ist und immer sein wird. Selbst wenn das HTTP-Protokoll dies unterstützt, würde das Netzwerk nicht, insbesondere wenn eine NAT-Firewall beteiligt ist.

Daher müssen alle Lösungen, die Server-Push-Kommunikation anbieten, auf Verbindungen angewiesen sein, die vom Client initiiert, offen gehalten werden und schließlich eine Zeitüberschreitung verursachen. Ich habe Bedenken, da dies negative Auswirkungen auf die Skalierbarkeit und Leistung des Servers haben muss.

+0

Scheint, dass Facebook und Google lange Umfrage verwenden, und sie sind noch nicht gefallen. Es ist nicht * unmöglich * mit allen Mitteln. – cgp

+0

Wenn Sie eine Verbindung zu einem Client von einem Server und NAT in der Weise öffnen möchten, kann die Port-Klopfmethode verwendet werden, um eine Verbindung herzustellen. Dann können Sie einen Socket pflegen. Meine Sorge ist die Begrenzung des Servers, viele Sockets aktiv zu halten. Ich würde zumindest die Verbindung gelegentlich zurücksetzen oder inaktive Clients inaktivieren, wenn ich feststellen kann, ob der Client inaktiv ist. – Brennan

+0

Nun, altCognito, wenn Todd Hoff Recht auf seinem Blog hat, dann sorgte Facebook $ 100 Millionen Hardware-Investitionen im letzten Jahr dafür. Der Artikel enthält jedoch einige weitere Details zur Serverimplementierung. Offensichtlich ist langes Polling nicht etwas, was Sie auf IIS in .Net oder einer anderen gängigen Webserver/Sprachplattform tun möchten, wo jede blockierte Verbindung teure Ressourcen bindet. – cdonner

Verwandte Themen