2010-08-08 8 views
32

Es scheint, dass Websockets in HTML 5 zu einem neuen Standard für Server-Push werden.HTML 5 Websockets werden Comet ersetzen?

Bedeutet das, dass der Server Push-Hack namens Comet veraltet sein wird?

Gibt es einen Grund, warum ich lernen sollte, wie man Kometen implementiert, wenn Websockets bald (1-2 Jahre) in allen gängigen Browsern verfügbar sein werden?

Dann könnte ich einfach Beaconpush oder Pusher stattdessen bis dann verwenden?

Antwort

12

, dass die Server-Push-Hack namens Comet bedeutet veraltet sein wird?

WebSockets sind in der Lage zu ersetzen, Comet, AJAX, Lange Polling, und alle Hacks das Problem, wenn Web-Browser nicht eine einfache Steckdose für die bidirektionale Kommunikation mit dem Server öffnen kann umgehen.

Gibt es einen Grund, warum ich lernen sollte, wie man Kometen implementiert, wenn WebSockets bald in allen gängigen Browsern verfügbar sein wird?

Es hängt davon ab, was "bald" für Sie bedeutet. Keine Version von Internet Explorer (vor IE 9) unterstützt beispielsweise die WebSockets-API.


UPDATE:

Dies wurde nicht als eine erschöpfende Antwort bestimmt. Sehen Sie sich die anderen Antworten und insbesondere @jvenema's an, um weitere Informationen zu diesem Thema zu erhalten.

+2

-1; während WebSockets in der Lage sind, die * client * -Seitenlösung für diese Probleme zu ersetzen, wird sie nicht die * Server * -Seite ersetzen, und bis 1) alle wichtigen Browser und 2) alle HTTP-Proxies dies unterstützen, wird es nicht obsolet ; selbst dann erwarte ich, dass die "Hacks" für Abwärtskompatibilität bleiben werden. – jvenema

+2

@jvenema: Ja, ich stimme deiner Antwort zu. Nichtsdestoweniger ist meine Antwort keine erschöpfende Erklärung des Themas, obwohl sie vom OP angenommen wurde. Ich glaube auch, dass die "Komet Hacks, et al" noch lange bleiben werden. –

+1

@jvenema: Ich habe auch das "Ja" aus meiner Antwort entfernt, was meiner Meinung nach irreführend war :) ... Ich wollte nicht sagen, dass der Komet bald obsolet wird, aber dass WebSockets versucht, das Konzept zu verbessern bidirektionale Kommunikation. –

2

Ja, weil "bald" ein sehr glatter Begriff ist. Viele Webshops müssen IE6 noch unterstützen.

Nein, weil ein Ausschlag von Kometen Frameworks und Servern in den letzten Zeiten entstanden ist, bald machen es weitgehend unnötig für Sie, Ihre Hände schmutzig im Keller zu bekommen.

Ja, denn "bald" ist ein sehr rutschig Begriff ...

+0

auf welche Frameworks beziehen Sie sich? aber sind die heute verfügbaren Frameworks nicht nur Kometen? –

+0

+1. IE9 ist Jahre entfernt. – You

+0

@ajsie: [Heutige Frameworks] (http://cometdaily.com/maturity.html) unterstützen asynchronen Server-Push zum Browser. Viele von ihnen unterstützen HTML 5 bereits, mit Fallback auf Kometen, so dass Sie sich nicht wirklich darum kümmern müssen, wie sie es erreichen. –

3

Mittelfristig werden WebSockets die Comet-Lösungen nicht nur wegen fehlender Browser-Unterstützung ersetzen, sondern auch wegen HTTP Proxies. Bis die meisten HTTP-Proxies aktualisiert werden, um WebSockets-Verbindungen zu unterstützen, müssen Webentwickler alternative Lösungen basierend auf Kometen-Techniken implementieren, um in Netzwerken zu arbeiten, die mit dieser Art von Proxies "geschützt" sind.

In den kurzen/mittleren Websockets wird nur eine Optimierung verwendet werden, wenn verfügbar, aber Sie müssen immer noch Long-Polling (Comet) implementieren, wenn Websockets nicht verfügbar sind, wenn Sie Ihre Website zugänglich machen müssen für viele Kunden mit Netzwerken/Browsern, die nicht unter Ihrer Kontrolle stehen.

Hoffentlich wird dies von JavaScript-Frameworks abstrahiert und für Webentwickler transparent sein.

+1

Könnten Sie noch etwas mehr ausführen? –

+0

Sicher, ich habe mehr meinen Punkt ausgearbeitet, ist es jetzt ok? – ggarber

3

Überlegen Sie, ob Sie eine Web-Socket-Bibliothek/ein Framework verwenden, das bei fehlender Browser-Unterstützung auf Comet zurückgreift.

Zur Kasse gehen Orbited und Hookbox.

17

Es gibt 2 Stücke dieses Rätsels:

F: Wird das clientseitige Teil des „Kometen“ notwendig sein?

A: Ja. Selbst in den nächsten zwei Jahren werden WebSockets in den "großen" Browsern nicht vollständig unterstützt. IE8 hat zum Beispiel keine Unterstützung dafür und auch nicht die aktuelle Version von FireFox. Angesichts der Tatsache, dass IE6 im Jahr 2001 veröffentlicht wurde und es immer noch ist, sehe ich WebSockets nicht so, dass es den Kometen in absehbarer Zeit vollständig ersetzt.

Q: Wird der serverseitige Teil von "Comet" benötigt?

A: Ja. Comet-Server sind für die Handhabung von langlebigen HTTP-Verbindungen ausgelegt, bei denen "typische" Webserver nicht funktionieren. Auch wenn die Clientseite WebSockets unterstützt, muss die Serverseite dennoch so ausgelegt sein, dass sie die Last verarbeiten kann.

Darüber hinaus, wie "gustavogb" erwähnt, zumindest jetzt WebSockets werden nicht richtig in einer Menge von HTTP Proxies unterstützt, so dass, bis alle aktualisiert werden, wir brauchen immer noch eine Art Fallback-Mechanismus.

Kurz gesagt: Komet, wie es heute existiert, wird nicht in absehbarer Zeit verschwinden.

Als ein zusätzlicher Hinweis: die Versionen von WebSockets, die derzeit in Chrome und Safari implementiert sind, sind zwei verschiedene Entwürfe, und die Arbeit an dem "aktuellen" Entwurf ist immer noch sehr stark entwickelt, so glaube ich nicht einmal realistisch zu sagen, dass die WebSockets-Unterstützung im Moment funktioniert. Als Kuriosität oder zum Lernen, sicher, aber nicht als echte Spezialisierung, zumindest noch nicht.

[Update, 2/23/11]

Die derzeit ausgelieferten Version von Safari hat eine gebrochene Implementierung (es ist nicht die richtigen Header nicht sendet), hat Firefox 4 nur WebSockets veraltet, so dass er gewonnen 't ship enabled, und IE9 isn't looking good either. Es sieht so aus, als wäre Chrome der einzige mit einer funktionierenden Version einer Entwurfsspezifikation. WebSockets hat also noch einen langen Weg vor sich.

+0

Danke für die Aktualisierung Ihrer Antwort. Fand es nützlich. – mak

+3

Google sind die besten Freunde des Entwicklers. Firefox & IE aktualisiert sich nie automatisch, so dass ich kaum mehr als 50% der Surfer mit WebSocket-Unterstützung sehen kann, sogar im Jahr 2012. (Jeder geht Chrom!) –

+0

@Zippoxer Es war bereits 2012. – Pacerier

0

Charter für die [working group] Arbeitsgruppe mit WebSockets beauftragt, Bi- oder serverinitiierten HTTP (Hybi):

Beschreibung der Arbeitsgruppe

HTTP hat am häufigsten als ein verwendet Request/Response-Protokoll, das für Clients führt, die nach neuen Daten suchen, oder Benutzer, die die Aktualisierungsschaltfläche in ihren Browsern drücken. Neuere Webanwendungen finden Wege, um mit Webservern in Echtzeit zu kommunizieren und Daten von der Serverseite auf den Client zu übertragen, sobald dieser verfügbar ist. Diese Anwendungen können jedoch bei , die vorhanden sind, nur eine Vielzahl von HTTP-Mechanismen (z. B. lange Abfragen Anfragen) verwenden, um bidirektional mit Webservern zu kommunizieren.

Der Hypertext-Bidirektionale (Hybi) wird Arbeitsgruppe Standardisierung von einem Ansatz suchen, um bidirektionale Kommunikation zwischen dem HTTP-Client, Server und Zwischen Einheiten zu halten, die mehr Effizienz im Vergleich zur derzeitigen Verwendung von hängenden Anfragen zur Verfügung stellen .

HTTP spielt immer noch eine Rolle; Es ist ein flexibles nachrichtenorientiertes System. websockets wurde entwickelt, um Bidirektionalität zu bieten und das lange Polling-Problem zu vermeiden. [it does this well]. aber es ist einfacher als http. und es gibt eine Menge Dinge, die für http nützlich sind. Es wird sicherlich weitere Fortschritte geben, die die bidirektionale Kommunikation von HTTP bereichern, sei es Kometen oder andere Push-Technologien. Mein eigener bescheidener Versuch ist [http://github.com/rektide/pipe-layer].