Mit Websockets, gibt es einen Platz für AJAX?

8

Ich baue gerade eine Echtzeitanwendung mit Node. Ich benutze socket.io, um meine Echtzeit-Interaktionen anzutreiben, habe aber jQuery geladen, also habe ich AJAX für mich verfügbar. Ich habe anfangs socket.io für all meine Kommunikation zwischen dem Server und dem Client verwendet.

Ich fange an zu denken, dass AJAX besser für bestimmte Fälle wie das asynchrone Ausführen von RESTful-Transaktionen geeignet ist, weil ich keinen separaten Nachrichtenfall in meinem Socket schreiben muss, um jede neue Transaktion zu behandeln und RESTful zu schreiben Routing.

Ich frage mich, ob ich etwas mache oder ob es am besten ist, Sockets für die Performance oder etwas anderes zu verwenden, an das ich nicht denke.

Danke! Matt Müller

    
Matt 12.01.2011, 08:17
quelle

2 Antworten

10

Ja, WebSockets ( RFC 6455 ) und Ajax sind ziemlich unterschiedlich und dienen unterschiedlichen Zwecken.

Wie Sie schon gesagt haben, können Sie mit Ajax RESTful-Anfragen machen. Dies bedeutet, dass Sie die vorhandene HTTP-Infrastruktur wie z. Proxies für Cache -Anfragen und Verwendung bedingter get-Anfragen . Die Ajax-Anfrage kann ziemlich schwergewichtig sein, da jede Ajax-Anfrage HTTP-Header enthält und Cookies enthält.

WebSockets ist für bidirektionale Kommunikation mit niedriger Latenz konzipiert. WebSockets hat pro Entwurf sehr wenig Aufwand in jeder Nachricht. Z.B. WebSockets-Nachrichten müssen keine HTTP-Header enthalten und können künftig für VoIP und Streaming in beide Richtungen verwendet werden.

Ein weiterer Unterschied ist, dass Ajax mit Servern verwendet werden kann. Z.B. Wenn Ihre Weblast mit mehreren Servern ausgeglichen ist, kann jeder Server eine Ajax-Anforderung auch nach einem Neustart (oder Upgrade) verarbeiten. Websocket ist "verbunden" und verwendet einen stateful Server, daher kann es schwieriger sein, mehrere Server damit zu verwenden.

Es gibt auch Server Sent Events, die WebSockets ähnlich sind, da der Server Daten an den Client senden kann (was nicht mit Ajax ohne Hacks (zB Kometen) möglich ist) und auch automatische Reconnections verarbeiten kann . Aber es ist nur für Nachrichten in einer Richtung (Server zu Client). Weitere Informationen finden Sie unter HTML5-serverseitiges Ereignis: EventSource im Vergleich zum eingebundenen WebSocket .

    
Jonas 19.12.2011, 20:14
quelle
-1

Das sind zwei völlig unterschiedliche Technologien und könnten zusammen verwendet werden: Bei AJAX wird die Anfrage vom Client initiiert, während bei WebSockets die Anfrage vom Server initiiert wird, um einige Daten an den Client zu übertragen.

    
Darin Dimitrov 12.01.2011 08:22
quelle

Tags und Links