Frage

Ich benutze node.js und socket.io. Ich habe ein Problem mit der Verbindungsgeschwindigkeit mit Socket.io. In Internet Explorer und Opera habe ich ein Problem mit der Verbindungsgeschwindigkeit. - Wenn ich FlashSocket oder WebSocket verwende. Wenn ich die Methode des Transportwestens -XHR -Anschlusses verwende, ist schnell - in allen Browsern (dh, FF, Chrome, Opera).

Was ist der Unterschied zwischen dem Transportmittel - XHR -Wacken und Flash / Websocket? Was ist der beste Transportmittel? Wie optimieren Sie die Verbindungsgeschwindigkeit, ist Socket.io?

Danke für den Hinweis!

War es hilfreich?

Lösung

Ich würde mich überraschen, wenn die allgemeine Geschwindigkeit der Verbindung im Laufe der Zeit zwischen den Webbrowsern unterschiedlich wäre, aber der Grund, warum Sie eine Verzögerung in der ersten Verbindung im Internet Explorer und in der Opera sehen, ist, dass der native WebSocket -Support nicht verfügbar ist, so wie sie war standardmäßig deaktiviert. Wenn Sie also FlashSocket wählen, muss ein zusätzliches Flash -Objekt (SWF -Datei) heruntergeladen werden, bevor eine Verbindung hergestellt wird.

Websockets werden in IE10 eingeführt und in Opera sind sie verfügbar, aber standardmäßig deaktiviert.

Was ist der Unterschied zwischen dem Transportmittel - XHR -Wacken und Flash / Websocket?

  • XHR -POLLING - Siehe http://en.wikipedia.org/wiki/push_technology#long_polling
  • FlashSocket Connection - Verwendet ein Flash -Socket -Objekt, um eine Verbindung zum WebSocket -Server herzustellen und mithilfe des WebSocket -Protokolls zu kommunizieren. Dies bedeutet, dass eine Interaktion zwischen Flash und JavaScript vorhanden ist und auch ein zusätzliches Flash -Objekt (SWF -Dateien) heruntergeladen werden muss.

Was ist der beste Transportmittel?

Websockets für jeden Webbrowser, der ihn nativ unterstützt (Chrome, Firefox, Safari). Wenn sich das Flash -Objekt (SWF -Datei) im Browser -Cache befindet, sollte die Verbindung schnell sein. Wenn dies nicht der Fall ist, wird es eine Verzögerung geben. XHR Long Polling ist eine gute Lösung und wird Cross Browser arbeiten, aber es gibt Negative:

  • Zwischen Umfrageanfragen könnten die angezeigten Daten veraltet sein (veraltet).
  • Es handelt sich um eine weniger effiziente Verbindungsmethode als eine einzelne TCP
  • HTTP hat einen Overhead, was bedeutet, dass auf Anfrage zusätzliche Headerinformationen gesendet werden und jede nachfolgende Anfrage.

Wie optimieren Sie die Verbindungsgeschwindigkeit, ist Socket.io?

(Ich bin ziemlich neu in Socket.io, dies ist nur ein Vorschlag)

Ich würde mir das ansehen Konfigurieren von Socket.io Docs und prüfen Sie, ob Sie das bedingt einstellen können transports Basierend auf dem Browser, der sich verbindet. Basierend auf Ihren Erfahrungen könnte dies sein:

  • Chrome, Firefox, Safari - Websockets
  • Dh Opera - XHR -Polling

Andere Tipps

Um die Zeit der Verbindung zu verkürzen, können Sie versuchen, das Timeout von Connect (standardmäßig 10 Sekunden) mit dem Parameter "Timeout Connect" zu verringern.

Zum Beispiel, um das Timeout von Connect auf 1 Sekunde zu reduzieren:

socket = io.connect('http://your-site.com',{'connect timeout': 1000});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top