Изучаем HTML 5-Б. Лоусон, Р. Шарп - 2011 |
Страница 239 из 244 Сообщения, фоновые вычисления и сокеты • 265 ВЕБ-сокеты:работа с потоковыми Web Sockets — это один из новейших API. Он лежит за пределами спецификации HTML5, но его возможности весьма удобны для многих веб-приложений реального времени. Веб-сокеты позволяют создавать двухстороннее соединение между сервером и клиентом, то есть браузером. Это соединение работает в режиме реального времени и открыто постоянно — до того момента, пока вы явно не закроете его. Таким образом, если сервер хочет отправить какую-то информацию клиенту, это сообщение вталкивается в соединяющий его с браузером канал немедленно, без задержек. Именно эта цель ставилась разработчиками Comet, и они добились желаемого. Comet — это неплохой способ для поддержания соединения с сервером и передачи данных в режиме реального времени, правда, требующий применения множества различных хитростей. В конечном итоге, если ни одна из хитростей не срабатывает, вся схема превращается в обычное опрашивание Ajax, не поддерживающее масштабирование и постоянно бомбардирующее сервер запросами. ПРИМЕЧАНИЕ Если браузер не поддерживает веб-сокеты, всегда можно использовать Flash. Хироши Ичкава написал корректировочный блок для веб-сокетов на Flash. Адрес его сайта — https://github.com/gimite/ web-socket-js. Если сокет открыт, то сервер может отправлять данные во все подключенные сокеты, и ему не приходится непрерывно отвечать на входящие запросы Ajax. Это большой шаг вперед, переход от опроса к проталкиванию данных — от модели с обратной связью к упреждающей модели. Именно этого в Comet добивались с помощью трюков, а веб-сокеты предлагают безо всяких дополнительных надстроек прямо в браузере. СОКЕТЫ РЕШАЮТ ПРОБЛЕМУ ЗАДЕРЖЕК В ПРИЛОЖЕНИЯХ РЕАЛЬНОГО ВРЕМЕНИ Огромное преимущество веб-сокетов — малое время ожидания. Так как сокет всегда открыт и слушает соединение, как только сервер проталкивает данные, они сразу же оказываются в вашем браузере — за вычетом времени на пересылку. Благодаря этому |