Время в оба конца от AJAX v. Web Sockets - PullRequest
5 голосов
/ 01 декабря 2011

Я хотел бы спросить, следует ли ожидать некоторого другого времени прохождения туда-обратно (отправки некоторой информации на сервер и получения ответа) при реализации с помощью веб-сокетов (сообщений) по сравнению со стандартным HTTP GET.Я предполагаю, что веб-сокет уже подключен и DNS разрешен.

Насколько я понимаю, было бы иначе, если бы GET состоял из нескольких циклических переходов в базовом протоколе, в чем я не уверен,В противном случае я бы ожидал таких же результатов.

Ответы [ 2 ]

18 голосов
/ 01 декабря 2011

WebSockets, кажется, имеют более низкое время прохождения в оба конца. Я провел несколько тестов локально и на удаленном сервере, усредняя время отключения для 100 запросов одновременно:

Local:
WebSocket:   2.46ms
Ajax:        9.97ms

Remote:
WebSocket:  93.41ms
Ajax:      183.49ms

Тесты были выполнены с Node.js с express и socket.io на сервере и Chrome с библиотекой socket.io на клиенте. Удаленные тесты проводились через соединение 3G.

Обновление : дома при подключении с гораздо меньшей задержкой цифры немного отличаются:

Websocket:  63.02ms
Ajax:       72.11ms

Это говорит о том, что задержка оказывает большее влияние на HTTP-запросы, чем на соединения WebSocket, что, вероятно, связано с тем, что HTTP должен совершить еще пару циклов, чтобы восстановить соединение для каждого запроса.

2 голосов
/ 02 декабря 2011

Это зависит от исходного сценария, который вы рассматриваете.

Пример 1: В одном случае у вас уже есть соединение HTTP 1.1, а в другом - уже установлен WebSocket. В этом сценарии обмен данными в обоих случаях будет в точности одинаковым, поскольку в обоих случаях у вас уже установлено соединение TCP, и дальнейшее установление связи между приложениями не требуется. (Примечание: количество данных, отправляемых для этих двух случаев, будет различным, но это влияет на пропускную способность, а не на задержку, то есть время прохождения сигнала в обоих направлениях).

Пример 2: В одном случае у вас уже есть соединение HTTP 1.1 (потому что, возможно, вы только что загрузили последнее изображение на своей странице), а в другом случае WebSocket не открывался. Что ж, в этом сценарии время обхода по HTTP будет меньше, чем время прохождения через WebSocket. Причина в том, что с HTTP вам нужно только отправить сегмент TCP и получить сегмент TCP (один прием в оба конца). При использовании WebSockets вам нужно настроить TCP-соединение и выполнить рукопожатие WS, которое включает в себя несколько циклов.

...