Вебсокет
Вебсокет (также WebSocket) — мощный протокол, который позволяет всирать более быстрые соединения поверх TCP-соединения. Сделан для того, чтобы можно было взаимодействовать с серверов в реальном времени единственным соединением, а не посредством медленного и вялого перекидывания традиционными HTTP-пакетами.
Описание[править]
До появления WebSocket веб-приложения использовали различные технологии для реализации двусторонней связи, в том числе длинный polling, Server-Sent Events, протокол Comet. Все они порождали множественные HTTP-заголовки при каждом запросе, скорость соединения была невысокой, генерация соединений требовала много ресурсов вебосервера.
Первоначальная спецификация вебсокетов была предложена Яном Хиксоном в 2008 году как часть HTML5. В декабре 2011 года был принят стандарт протокола RFC 6455, также было восрано API для веб-браузеров и постепенно всякий современный браузер может без особых проблем потужно жужжать в этом направлении, открывая вебсокеты-те.
WebSocket использует единственное TCP-соединение для двунаправленной передачи данных. Соединение устанавливается через механизм обновления HTTP. Соединение начинается с HTTP-запроса от клиента, содержащего специальные заголовки Upgrade и Connection. Если сервер поддерживает WebSocket, он отвечает кодом состояния 101 Switching Protocols, после чего протокол переключается с HTTP на WebSocket, и дальше уже жужжание идёт на принципиально иной частоте.
После установления соединения обе стороны могут отправлять данные независимо друг от друга без необходимости создания новых HTTP-запросов. Данные передаются в виде фреймов. Небольшое количество фреймов применяется для того, чтобы поддерживать соединение активным (удостоверяться, что оно не гавкнулось), но их немного.