HTML 5 Websockets заменит Comet? - PullRequest
32 голосов
/ 09 августа 2010

Похоже, что веб-сокеты в HTML 5 станут новым стандартом для проталкивания сервера.

Означает ли это, что серверный push-взлом Comet будет устаревшим?

Есть ли причина, по которой я должен научиться внедрять комету, когда скоро Websockets (1-2 года) будет доступен во всех основных браузерах?

Тогда я мог бы просто использовать Beaconpush или Pusher вместо этого до тех пор, верно?

Ответы [ 6 ]

17 голосов
/ 12 августа 2010

Эта головоломка состоит из 2 частей:

В: Будет ли необходима часть кометы на стороне клиента?

A: Да.Даже в течение следующих 2 лет вы не увидите полной поддержки WebSockets в «основных» браузерах.Например, IE8 не поддерживает и не поддерживает текущую версию FireFox.Учитывая, что IE6 был выпущен в 2001 году и все еще существует сегодня, я не вижу в WebSockets полной замены кометы в ближайшее время.

В: Будет ли необходима серверная часть "кометы"?

A: Да.Серверы Comet предназначены для обработки долгоживущих HTTP-соединений, в отличие от «типичных» веб-серверов.Даже если клиентская сторона поддерживает WebSockets, серверная сторона все равно должна быть спроектирована для обработки нагрузки.

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

Короче: комета, как она существует сегодня, не исчезнет в ближайшее время.

В качестве дополнительного примечания: версии WebSockets, которые в настоящее время реализованы в Chrome и Safari, представляют собой два разных проекта, и работа над «текущим» проектом все еще находится в очень тяжелой разработке, поэтому я даже не верю, что это так.реалистично сказать, что поддержка WebSockets в данный момент работает.В качестве любопытства или для обучения, конечно, но не в качестве реальной спецификации, по крайней мере, пока.

[Обновление, 23.02.11]

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

12 голосов
/ 09 августа 2010

Означает ли это, что серверный push-взлом Comet будет устаревшим?

WebSockets способны заменить Comet, AJAX, Long Polling и все хаки для обхода проблемы, когда веб-браузеры не могут открыть простой сокет для двунаправленной связи с сервером.

Есть ли причина, по которой я должен научиться внедрять комету, когда WebSockets скоро будет доступен во всех основных браузерах?

Это зависит от того, что "скоро" значит для вас. Например, ни одна версия Internet Explorer (до IE 9) не поддерживает API WebSockets.


ОБНОВЛЕНИЕ:

Это не был исчерпывающий ответ. Ознакомьтесь с другими ответами и, в частности, @ jvenema's , для дальнейшего понимания этой темы.

3 голосов
/ 09 августа 2010

Подумайте об использовании библиотеки / фреймворка для веб-сокетов, которые возвращаются к комете при отсутствии поддержки браузера.

Извлечение Orbited и Hookbox.

3 голосов
/ 09 августа 2010

В среднесрочной перспективе веб-сокеты не заменят кометные решения не только из-за отсутствия поддержки браузеров, но и из-за HTTP Proxies .До тех пор, пока большинство HTTP-прокси не будут обновлены для поддержки соединений через веб-сокеты, веб-разработчикам придется внедрять альтернативные решения, основанные на методах комет, для работы в сетях, «защищенных» такими прокси-серверами.

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

Надеюсь, это будет абстрагировано фреймворками JavaScript и будет прозрачным для веб-разработчиков.

2 голосов
/ 09 августа 2010

Да, потому что «скоро» - очень скользкий термин.Многие интернет-магазины по-прежнему должны поддерживать IE6.

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

Да, потому что " скоро " - очень скользкий термин ...

0 голосов
/ 24 сентября 2010

Устав для рабочей группы [ * ], работающей с веб-сокетами, двунаправленным или инициируемым сервером HTTP (hybi):

Описание рабочей группы

HTTP чаще всего использовался в качестве протокола запроса / ответа, приводя клиентам, запрашивающим новые данные, или пользователям, нажимающим кнопку обновления в их браузеры. Последние веб-приложения находят способы общения с веб-серверами в режиме реального времени, передавая данные со стороны сервера в клиент, как только это доступно. Тем не менее, эти приложения в настоящее время может использовать только различные механизмы HTTP (например, длинный опрос запросы) для двунаправленной связи с веб-серверами.

Рабочая группа Hypertext-Bidirectional (HyBi) будет искать стандартизация одного подхода для поддержания двунаправленного связь между клиентом HTTP, сервером и промежуточным субъекты, которые обеспечат большую эффективность по сравнению с нынешними использование запросов на зависание.

HTTP все еще играет роль; это гибкая система, ориентированная на сообщения. websockets был разработан, чтобы обеспечить двунаправленность и полностью избежать проблемы длинных опросов. [ это делает хорошо ]. но это проще, чем http. и есть много вещей, которые полезны в http. безусловно, будет продолжаться прогресс, обогащающий двунаправленную связь http, будь то комета или другие push-технологии. моя собственная скромная попытка [http://github.com/rektide/pipe-layer].

]
...