Могу ли я использовать HTML5 WebSockets для задач, обычно выполняемых с помощью AJAX? - PullRequest
6 голосов
/ 23 июня 2011

Я только начал исследовать HTML5 WebSockets .Мне было интересно, могу ли я обновить все содержимое веб-страницы с помощью веб-сокетов вместо использования ASP.NET UpdatePanels, или это будет излишним?

Можно ли использовать WebSockets вместо AJAX?И для этого ли нужно использовать WebSockets?

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

Ответы [ 4 ]

3 голосов
/ 24 июня 2011

Я думаю, что XHR и WebSocket предназначены для 2 разных сценариев, и вы должны использовать тот, который лучше соответствует вашему сценарию.

XHR имеет пару запрос-ответ. Каждый запрос связан с ответом. Это хорошо для удаленного вызова процедуры, но создает ненужные накладные расходы, если вы хотите получить ответ без запроса (то есть push-запрос сервера).

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

В сценарии нажатия кнопки и обновления содержимого (например, редактирование ячеек таблицы) XHR (и UpdatePanel) работают лучше. Это потому, что обновление контента должно быть связано с нажатием кнопки. Это пара запрос-ответ. Но в чистом сценарии обновления контента (например, отображение цены акций в режиме реального времени) WebSocket работает лучше. В сценарии, в котором обновление контента не связано с нажатием кнопки (например, в чате), WebSocket также работает лучше.

2 голосов
/ 23 июня 2011

Стандарты WebSocket предназначены для приложений, которым требуется коммуникация с малыми задержками и низкими издержками. Они хороши для существующих приложений, которые расширяют границы возможного с AJAX / Comet / long-poll. Но что еще более важно, WebSockets обеспечит создание целого нового класса веб-приложений, которые еще не существуют.

В вашем случае кажется, что WebSockets, вероятно, будет излишним, поскольку задержка не является основной проблемой в том, что вы создаете. Вы, конечно, могли бы сделать это с помощью WebSockets, но я подозреваю, что это было бы дополнительной работой для очень небольшой выгоды в вашем случае.

См. этот ответ , почему WebSockets уже готовы для общего использования (с web-socket-js и встроенной поддержкой iOS это означает, что WebSockets поддерживаются практически во всех браузерах в дикий).

0 голосов
/ 23 июня 2011

Технически, да.Практически, я бы, наверное, подождал.

Веб-сокеты - это определенно способ, которым HTML5 использует тот тип связи, к которому мы привыкли.Технически, да, вы можете, но в зависимости от типа сайта, который вы создаете, вы можете отложить.Websockets является одной из новых частей спецификации HTML5 и все еще находится в стадии доработки.Он работает в новейших версиях Chrome и Firefox 4, но в IE9 это еще не реализовано, и нет ни слова о том, будет ли IE10 иметь его.Технические сайты, которые демонстрируют новейшую технологию (например, демонстрацию того, что возможно в HTML5) и любые другие вещи, где подавляющее большинство аудитории будет гарантированно использовать поддерживающий браузер или будут первыми пользователями, должны подойти.Если нет, вы можете отталкивать некоторых пользователей.Только вы можете решить, какой путь выбрать.

Ключевым моментом здесь является то, что Websockets в настоящее время является изменяющейся спецификацией, и AJAX работает как в старых, так и в новых браузерах.Если вам нужна обратная совместимость в дополнение к гарантии, спецификация и браузеры не изменятся завтра и не сломают существующий код, используйте AJAX.Если вы круты с небольшой вероятностью того, что спецификации и реализации браузера могут измениться в будущем и не заботятся о людях, использующих старые браузеры, тогда используйте веб-сокеты.

Другой ответ на стекопоток показывает поддержку веб-сокетов:

  • Chrome 4.0 поддерживает веб-сокеты.
  • Safari 5.0.2 также поддерживает их
  • Firefox 4.0 поставляется с отключенной поддержкой веб-сокетов.см.
  • . Поставляется Opera 11 с отключенной поддержкой. Чтобы включить его, см.
  • IE9 не поддерживает их, однако дополнение предлагает экспериментальную поддержку
0 голосов
/ 23 июня 2011

Если вы хотите использовать WebSockets на странице, которую должен просматривать IE8, используйте вместо этого Ajax.

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

В данный момент WebSockets используются только для реализации игрушек. Они не готовы для клиентов. Кроме того, они действительно необходимы только тогда, когда Ajax вызывает и вызовы Comet слишком медленные для ваших нужд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...