Server gesendete Ereignis vs web sockets?
Ich arbeite an einer web-app für die Benutzer zugänglich ist, die über mehrere Plattformen-von smartphones bis zu desktops, die muss manchmal eine Kommunikation zwischen zwei clients zum Beispiel, wenn ich will, dass mein Freund an mein Netzwerk würde ich Freundschaftanfrage senden, aber ich möchte, dass der Wunsch gesehen zu werden von meinem Freund, ohne ihm die Seite zu aktualisieren.
In diesem Szenario wäre die bessere Wahl?
Und auch weil ich will, dass dieses Werk auf so vielen Plattformen und Browsern wie möglich das mehr browser unterstützen?
Gibt es eine bessere option?
InformationsquelleAutor user3053234 | 2014-05-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einige Dinge zu beachten, wenn dieser Wahl.
design-Entscheidung, da WebSockets ist ein anderes Protokoll verschachtelt
innerhalb einer HTTP-Verbindung und kann es nicht nutzen-caching (weder die
Browser noch content delivery Networks (CDNs).
Gesendeten Ereignisse bleibt eine HTTP-Verbindung und nicht leiden
diese.
browser bis 4.4 (wenn Sie eingeschaltet, um die Verwendung von Chrome) - wenn also
Sie erwägen, eine hybride mobile-app, benötigen Sie einen fallback-Z
als SocketIO, da dies geschrieben wird, 4.4 nur 20% des Marktes
und hybrid-apps mit dem nativen Android-browser.
die meisten Akku-effizientes Protokoll für mobile Geräte, da alle anderen
Optionen benötigen viele HTTP-verbindungen und es ist die wiederholte
Verhandlungen der Header, wird die Belastung der cpu und abtropfen lassen, die
Batterie.
Eine weitere option könnte sein Benachrichtigungen. Alle mobilen Geräte unterstützen nun Meldungen, die anvisiert werden können, um eine App und eine Anzahl von Browser-als auch. In allen Fällen ist bereits eine Verbindung vom client zu den messaging-center (Apple, Google, Microsoft, etc) und alle Benachrichtigungen werden über diesen Kanal.
Hier ist eine gute übersicht über WebSockets vs. SSE:
http://www.html5rocks.com/en/tutorials/eventsource/basics/
"Alle anderen Optionen erfordern viele HTTP-verbindungen". Nicht SSE erfordern nur eine?
SSE erfordert nur eine Verbindung für den client zum empfangen von Ereignissen vom server, aber eine neue Verbindung wird erforderlich sein, für jede Zeit, die der client benötigt, um den server zu aktualisieren.
HTTP-KeepAlive hat bei uns seit 1.1 und bedeutet, dass die meisten der Zeit, eine neue TCP-Verbindung ist nicht erforderlich. Der Websocket - /SSE tun, speichern Sie die header - (kann erheblich sein) und die hin-und Rückfahrkarte (Haupt-Ursache für Latenz).
InformationsquelleAutor JaysonRaymond
Server Gesendeten Ereignisse: Eine persistente Verbindung der server-2-Kunden nur, für das senden von SMS-Nachrichten und das ist implementiert in alle gängigen Browser, aber Internet Explorer. Es wieder herstellen können, selbst wenn die Verbindung verloren geht. http://caniuse.com/eventsource
WebSokets: Eine voll-duplex-permanente Verbindung geeignet zur übertragung UTF8-text und binären Daten. http://caniuse.com/websockets
WebSocket ist besser, und die Zukunft.
Kann Server Gesendeten Ereignisse? Die Frage ist, über SSE vs WS. Möglicherweise haben Sie falsch verstanden, die OP ' s Frage.
Dieser Kommentar hat gepostet, bevor ich fertig war, siehe meine Antwort hier zu sehen, andere Dinge zu berücksichtigen, wenn Sie machen diese Wahl.
InformationsquelleAutor vtortola
Aus, was ich verstehe, SSEs sind einfacher und leichter zu implementieren, in der Erwägung, dass WebSockets bieten bi-direktionale Datenübertragung, sondern Ihre eigenen Protokoll/API, die Sie benötigen, zu verstehen, zu nutzen. Ehrlich gesagt, ich habe nie wirklich die Mühe gemacht mit SSEs, Socket.IO nicht alle, die ich brauchte, so weit wie Echtzeit-web-app die Kommunikation relativ einfach und ist gebaut, um die cross-browser.
Wenn Sie nur wollen, dass er in der Lage sein, um die Benachrichtigung zu Lesen, dann SSEs sollten in Ordnung sein. Wenn Sie wollen, dass er in der Lage sein, um die Antwort zu deinem Freund Anfrage von der gleichen Seite, dann haben die server-senden Sie eine Benachrichtigung, dass er angenommen wird, ist Sie wahrscheinlich verwenden wollen, WebSockets-Implementierung.
InformationsquelleAutor rw-nandemo