Интернет магазин китайских планшетных компьютеров |
|
Компьютеры - WebSocket11 мая 2011Оглавление: 1. WebSocket 2. Реализация WebSocket в браузерах протокол полнодуплексной двунаправленной связи поверх TCP соединения, предназначенный для обмена сообщениями между браузером и веб-сервером в режиме реального времени. В настоящее время в W3C происходит стандартизация API Web Sockets, а в IETF находится на утверждении стандарт протокола Web Socket. Открытие канала WebSocketДля установления соединения WebSocket клиент и сервер используют протокол, похожий на HTTP. Клиент формирует особый HTTP-запрос, на который сервер отвечает специальным образом. Протокол 75До редакции черновика протокола номер 75 включительно соединение WebSocket устанавливалось следующим образом. Запрос клиента: GET /demo HTTP/1.1 Upgrade: WebSocket Connection: Upgrade Host: example.com Origin: http://example.com WebSocket-Protocol: sample Ответ сервера, подтверждающий переход на WebSocket: HTTP/1.1 101 Web Socket Protocol Handshake Upgrade: WebSocket Connection: Upgrade WebSocket-Origin: http://example.com WebSocket-Location: ws://example.com/demo WebSocket-Protocol: sample Сразу после отправки ответа WebSocket соединение считается установленным, клиент и сервер могут начинать двунаправленный обмен сообщениями по этому же TCP-соединению. Для передачи текстового сообщения необходимо перед ним передать нулевой байт, а после байт со значением 255. Протокол 76Начиная с 2 июня 2010 года в протокол WebSocket были внесены изменения, изменившие процедуру установления соединения WebSocket без сохранения обратной совместимости. В 76-ой редакции черновика протокола WebSocket добавлена защита от поддельных запросов. Клиент, поддерживающий новую схему, присылает следующий запрос: GET /demo HTTP/1.1 Upgrade: WebSocket Connection: Upgrade Sec-WebSocket-Key2: 4 @1 46546xW%0l 1 5 Host: example.com Sec-WebSocket-Key1: 12998 5 Y3 1 .P00 Origin: http://example.com WebSocket-Protocol: sample ^n:ds[4U В запрос добавлены новые заголовки "Sec-WebSocket-Key1" и "Sec-WebSocket-Key2" и 8-байтовое тело запроса. Все они генерируются клиентом случайным образом. Ответ сервера, подтверждающий переход на WebSocket: HTTP/1.1 101 Web Socket Protocol Handshake Upgrade: WebSocket Connection: Upgrade Sec-WebSocket-Origin: http://example.com Sec-WebSocket-Location: ws://example.com/demo Sec-WebSocket-Protocol: sample 8jKS'y:G*Co,Wxa- Ответ содержит новые названия заголовков и 16-байтное тело ответа, вычисляемое следующим образом:
Примечания. Несмотря на "похожесть" новых запросов и ответов на запросы и ответы протокола HTTP, они таковыми не являются. Например, в запросе есть тело, но в заголовках поле "Content-Length" отсутствует. Серверной части следует поддерживать оба вида клиентов и отличать их по наличию или отсутствию в запросе заголовков Sec-WebSocket-Key1 и Sec-WebSocket-Key2. Протокол 07В 07-ой версии черновика протокола от 22 апреля 2011 были внесены изменения. Клиент присылает следующий запрос: GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Sec-WebSocket-Origin: http://example.com Sec-WebSocket-Protocol: chat, superchat Sec-WebSocket-Version: 7 Ответ сервера имеет следующий вид: HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= Sec-WebSocket-Protocol: chat Ответ содержит заголовок Sec-WebSocket-Protocol с единственным протоколом выбраным сервером из всех поддерживаемых клиентом. Заголовок Sec-WebSocket-Accept формируется следующим образом:
Просмотров: 2044
|