XMLHttpRequest против Socket против другого подхода

Я читал, что XMLHttpRequests лучше всего подходят для контента, частота обновления которого составляет 30 секунд или более. В той же статье упоминалось, что веб-приложения, которым требуется более высокая частота, должны использовать сокет. Я не могу найти статью/книгу, в которой это упоминается (если кто-нибудь может опубликовать ссылки на статьи, в которых это обсуждается, буду признателен). Поддерживает ли ваш опыт работы с XMLHttpRequest и сокетами вышеуказанное утверждение или нет? Какие другие типы соединений между браузером и сервером следует учитывать?


person zooropa    schedule 30.06.2009    source источник


Ответы (3)


Javascript не имеет возможности осуществлять настоящую связь через сокеты. Если вы привязаны только к Javascript (без помощника SWF, ActiveX или какой-либо другой технологии), тогда XMLHttpRequest — ваш лучший выбор.

XMLHttpRequest плохо подходит для более частых обновлений (по крайней мере, теоретически) из-за накладных расходов, связанных с синтаксическим анализом и формированием запроса, а также синтаксическим анализом результатов. Теоретически Socket-соединение даст вам обратную связь с сервером, минуя генерацию запросов.

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

Вот небольшая демонстрация Sockets в Javascript с SWF Helper:

SocketJS

person Justin Niessner    schedule 30.06.2009

Ответ заключается не только в частоте обновлений. Количество одновременных пользователей также важно, так как использование Comet (это ключевое слово это приведет вас к большему количеству статей) использует подключения к серверу и может не масштабироваться. Современные веб-серверы лучше справляются с большим количеством подключений, но вам нужно проверить это в своей среде.

Для меня даже 30 секунд слишком часто для использования AJAX. Мой предел, вероятно, около одной минуты.

person D'Arcy Rittich    schedule 30.06.2009

Теперь эту статью следует считать устаревшей. Современные браузеры без проблем обрабатывают запросы всего за 1 секунду. Посмотрите, как быстро Google угадывает ваш запрос. Простой вызов XMLHttpRequest. Без вспышки. Нет ActiveX.

person Hawk    schedule 04.03.2015