# Таблица транспортов и их возможностей Здесь мы подведём итог раздела, сравним транспорты и их возможности. [cut] ## Способы опроса сервера Основные способы опроса сервера:
  1. **Частые опросы** -- регулярно к серверу отправляется запрос за данными. Сервер тут же отвечает на него, возвращая данные, если они есть. Если нет -- получается, что запрос был зря. Этот способ очень лёгок в реализации, но приводит к большому количеству лишних запросов, поэтому мы его далее не рассматриваем.
  2. **Длинные опросы** -- к серверу отправляется запрос за данными. Сервер не отвечает на него, пока данные не появятся. Когда данные появились -- ответ с ними отправляется в браузер, и тот тут же делает новый запрос. Способ хорош, пока сообщений не слишком много. В идеальном случае соединение почти всё время висит открытым, лишь иногда сервер отвечает на него, доставляя данные в браузер. Также удобен в реализации, но даёт большое количество висящий соединений на сервере. Не все сервера хорошо поддерживают это. Например, `Apache` будет есть очень много памяти.
  3. **Потоковое соединение** -- открыто соединение к серверу, и через него непрерывно поступают данные.
## Таблица транспортов Основные характеристики всех транспортов, которые мы обсуждали в деталях, собраны в этой таблице. Они были детально рассмотрены в предыдущих главах раздела.
`XMLHttpRequest` `IFRAME` `SCRIPT` `EventSource` `WebSocket`
Кросс-доменность да, кроме IE9-x1 даi1 да да да
Методы Любые GET / POST GET GET Свой протокол
COMET Длинные опросыx2 Непрерывное соединение Длинные опросы Непрерывное соединение Непрерывное соединение в обе стороны
Поддержка Все браузеры, ограничения в IE9-x3 Все браузеры Все браузеры Кроме IE IE 10, FF11, Chrome 16, Safari 6, Opera 12.5w1
Пояснения:
`XMLHttpRequest`
  1. В IE8-9 поддерживаются кросс-доменные GET/POST запросы с ограничениями через `XDomainRequest`.
  2. Можно говорить об ограниченной поддержке непрерывного соединения через `onprogress`, но это событие вызывается не чаще чем в `50ms` и не гарантирует получение полного пакета данных. Например, сервер может записать "Привет!", а событие вызовется один раз, когда браузер получил "При". Поэтому наладить обмен пакетами сообщений с его помощью затруднительно.
  3. Многие возможности современного стандарта включены в IE лишь с версии 10.
`IFRAME`
  1. Во всех современных браузерах и IE8 кросс-доменность обеспечивает `postMessage`. В более старых браузерах возможны решения через `window.name` и хэш.
`WebSocket`
  1. Имеется в виду поддержка окончательной редакции протокола [RFC 6455](http://tools.ietf.org/html/rfc6455), описанной в разделе [](/websockets). Более старые браузеры могут поддерживать черновики протокола. IE9- не поддерживает `WebSocket`.
Существует также нестандартный транспорт, не рассмотренный здесь: