Frage

Ich möchte fragen, ob ich eine andere Rundwegzeit erwarten sollte (einige Informationen an den Server senden und eine Antwort erhalten), wenn ich mit Web-Sockets (Nachricht) implementiert ist, im Vergleich zu einem Standard-HTTP-GET. Ich gehe davon aus, dass die Web -Socket bereits verbunden ist und der DNS behoben ist.

Soweit ich es verstehe, wäre es anders, wenn Get aus mehreren Roundtrips im zugrunde liegenden Protokoll bestehen würde, von dem ich mich nicht sicher bin. Andernfalls würde ich die gleichen Ergebnisse erwarten.

War es hilfreich?

Lösung

Es hängt vom Anfangsszenario ab, das Sie in Betracht ziehen.

Beispiel 1: Sie haben bereits eine HTTP 1.1 -Verbindung in einem Fall und in einem bereits im anderen Fall festgelegten WebSocket. In diesem Szenario ist die Roundreise für beide Fälle genau gleich, da in beiden Fällen bereits die TCP-Verbindung hergestellt und kein weiterer Anwendungshandshake erforderlich ist. (Hinweis: Die Menge der Daten, die für die beiden Fälle gesendet wurden, wird unterschiedlich sein, aber dies wirkt sich auf die Bandbreite aus, nicht die Latenz, dh Roundtrip-Zeit).

Beispiel 2: Sie haben bereits eine HTTP 1.1 -Verbindung in einem Fall (da Sie vielleicht gerade das letzte Bild auf Ihrer Seite heruntergeladen haben) und in dem anderen Fall kein WebSocket geöffnet. Nun, in diesem Szenario ist die Hin- und Rückfahrt über HTTP niedriger als die Roundtrip-Zeit über Websocket. Der Grund dafür ist, dass Sie mit HTTP nur ein TCP -Segment senden und ein TCP -Segment (einzelne Rundreise) erhalten müssen. Mit WebSockets müssen Sie die TCP-Verbindung herstellen und den WS-Handshake durchführen, der einige Rundefahrten umfasst.

Andere Tipps

Websockets scheinen eine niedrigere Round -Trip -Zeit zu haben. Ich habe einige Tests lokal und auf einem Remote -Server durchgeführt, um die Auslösezeiten für 100 Anfragen gleichzeitig zu übermitteln:

Local:
WebSocket:   2.46ms
Ajax:        9.97ms

Remote:
WebSocket:  93.41ms
Ajax:      183.49ms

Die Tests wurden mit Node.js mit Express und Socket.io auf dem Server und Chrome mit der Socket.io -Bibliothek auf dem Client durchgeführt. Die Remote -Tests wurden über eine 3G -Verbindung durchgeführt.

Aktualisieren: Zu Hause in einer viel niedrigeren Latenzverbindung sind die Zahlen etwas anders:

Websocket:  63.02ms
Ajax:       72.11ms

Dies deutet darauf hin, dass die Latenz einen größeren Einfluss auf HTTP -Anfragen hat als auf Websocket -Verbindungen, was wahrscheinlich darauf zurückzuführen ist, dass HTTP ein paar weitere Rundreisen unternehmen muss, um eine Verbindung für jede Anfrage wiederherzustellen, wie Sie bereits erwähnt haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top