Polling, Comet, WebSockets, etc

8

Ich muss einige ziemlich aggressive Auto-Refresh-Funktionen in eine Webanwendung einbauen. Es ist eine Art Fotogalerie und die Bilder werden auf AmazonS3 gespeichert, aber die Daten über die Bilder werden in unserer eigenen Datenbank gespeichert. Ich habe mit dem Abruf des Servers und dem Senden von Ajax-Aufrufen herumgespielt, um die aktualisierten Daten zu erhalten. Ich bin wirklich besorgt über die Belastung der Server mit dieser Methode. Manchmal müsste die Seite alle 15 bis 30 Sekunden aktualisiert werden.

Ich habe auf Comet gelesen und ich bin einfach nicht verkauft, dass dieser "Hack" eine großartige Idee ist. WebSockets würden wahrscheinlich helfen, aber ich bin besorgt, sie sind einfach zu neu und zu wenig unterstützt. Also, hat jemand irgendwelche Empfehlungen zu Möglichkeiten, ein System zu entwerfen, das oft aktualisiert werden muss und das Potenzial für eine sehr hohe Benutzerbasis hat?

Ich bin nicht bereit, nur mehr Server auf das Problem zu werfen, aber ich bin auch nicht davon überzeugt, dass dies der beste Ansatz ist. Und bevor irgendjemand anderes es vorschlägt, kann ich Flex nicht machen, weil die Web-App auf dem iPad funktionieren muss.

    
Gregg 31.01.2011, 20:55
quelle

2 Antworten

7

WebSockets scheint eine ziemlich gute Wahl zu sein. Die Deaktivierung von WebSockets in Firefox 4 und Opera 11 ist wahrscheinlich vorübergehend, da die Arbeitsgruppe damit begonnen hat, Entwürfe zu den Problemen zu veröffentlichen. Darüber hinaus funktioniert das web-socket-js Flash-Fallback auch in Browsern, in denen native WebSockets deaktiviert wurden. Auch erwähnenswert ist, dass iOS 4.2 native WebSockets hat. Bei WebSockets + Fallback wird WebSockets also fast überall unterstützt.

Wenn Sie WebSockets verwenden, sollten Sie möglicherweise auch in Betracht ziehen, Updates zu pushen, anstatt die Clients abfragen zu lassen. Dies wird dazu beitragen, dass die Clients den Server nicht versehentlich mit DDOS versorgen. Die Latenz wird nur für die Clients erhöht und zu diesem Zeitpunkt können Sie weitere Ressourcen auf der Serverseite hinzufügen.

Wenn serverseitiges JavaScript nicht in Frage kommt, können Sie Socket.IO ausprobieren, das ein Nodejs WebSockets-Framework ist, das auswählt der beste Transport, den sowohl der Client als auch der Server automatisch unterstützen (bevorzugt native WebSockets, dann WebSockets Fallback, dann verschiedene Optionen für lange Abfragen). Es ermöglicht außerdem, dass der Server- und der Clientcode sehr ähnlich aussehen, da er eine clientseitige Bibliothek enthält. Socket.IO scheint momentan ein gutes Stück zu haben.

Wenn Sie Ruby centric sind, sollten Sie sich em-websockets ansehen. Sowohl Socket.IO als auch em-websockets sind ereignisbasierte Server, die eine sehr hohe Anzahl von Clients ermöglichen, insbesondere dort, wo Latenzzeiten und nicht die Bandbreite im Vordergrund stehen.

    
kanaka 31.01.2011, 21:58
quelle
0

Die WS-I-Gruppe hat etwas veröffentlicht, das "Reliable Secure Profile" heißt ein Glass Fish und .NET-Implementierung , die anscheinend inter- operate gut.

Mit etwas Glück gibt es ein Javascript Implementierung auch dort.

Es gibt auch eine Silverlight-Implementierung, die HTTP Duplex verwendet. Sie können JavaScript mit dem Silverlight-Objekt verbinden Callbacks erhalten, wenn ein Push auftritt.

Es gibt auch kommerzielle bezahlte Versionen .

    
CHI Coder 007 20.04.2011 01:47
quelle

Tags und Links