Movatterモバイル変換


[0]ホーム

URL:


Перейти до вмісту
Вікіпедія
Пошук

WebSocket

Матеріал з Вікіпедії — вільної енциклопедії.

WebSocket — це протокол, що призначений для обміну інформацією між браузером та вебсервером в режимі реального часу. Він забезпечує двонаправленийповнодуплексний канал зв'язку через одинTCP-сокет. WebSocket спроектовано для втілення увеббраузерах тавебсерверах, але може також використовуватись будь-якимклієнт-сервернимзастосунком.Прикладний програмний інтерфейс WebSocket був стандартизованийW3C, крім того протокол WebSocket стандартизованийIETF якRFC 6455.[1]

У вебзастосунках доцільно використовувати протокол за необхідності відображення інформації в real-time. Альтернативна технологія —Server-sent events[en].

Встановлення з'єднання

[ред. |ред. код]

Щоб встановити WebSocket-з'єднання, клієнт надсилає handshake-запит — так званий запит на встановлення довіри, своєрідне, «цифрове рукостискання». Клієнт також надсилає свій відкритий ключSec-WebSocket-Key для шифрування повідомлень для нього. Відкритий ключ в секції параметрівHTTP-запиту кодується в форматіbase64.

 GET /ws HTTP/1.1 Host: pmx Upgrade: websocket Connection: Upgrade Sec-WebSocket-Version: 6 Sec-WebSocket-Origin: http://pmx Sec-WebSocket-Extensions: deflate-stream Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==

В разі встановлення з'єднання, сервер надсилає клієнтові відповідь. Де сервер, через правильне заповнення параметраSec-WebSocket-Accept надає підтвердження, що він дійсно може встановлювати WebSocket-з'єднання. Алгоритм формування: до значенняSec-WebSocket-Key у вигляді як його отримав сервер, додається стрічка258EAFA5-E914-47DA-95CA-C5AB0DC85B11; для отриманої стрічки розраховуютьSHA1-хеш, який кодується в форматіbase64. На приклад:

 HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=

URL-схеми

[ред. |ред. код]

Специфікація протоколу WebSocket визначає дві нові схеми URI,ws: таwss:,[2] для нешифрованого та шифрованого з'єднання відповідно. Поза іменем схеми, решта складових URI визначена загальним синтаксисом URI.[3]

Реалізація WebSocket у браузерах

[ред. |ред. код]

Для встановлення з'єднання клієнтський скрипт створює об'єкт WebSocket, в конструктор якого передає параметр WebSocketURI, і визначає функції зворотного виклику при з'єднанні, отриманні повідомлення і розриві з'єднання.

<html><head><script>constwebSocket=newWebSocket('ws://localhost/echo');webSocket.onopen=event=>{alert('onopen');webSocket.send("Hello Web Socket!");};webSocket.onmessage=event=>{alert('onmessage, '+event.data);webSocket.close();};webSocket.onclose=event=>{alert('onclose');};</script></head><body></body></html>

WebSocket підтримують такі браузери:

  • Google Chrome (починаючи з версії 4.0.249.0);
  • Apple Safari (починаючи з версії 5.0.7533.16);
  • Mozilla Firefox (починаючи з версії 4);
  • Opera (починаючи з версії 10.70 9067);

Також WebSocket підтримують

  • мобільна версія Safari вiOS 4.2[4]
  • BlackBerry Browser в OS7[5]

У кінці листопада 2010 Adam Barth опублікував[6] результати дослідження надійності протоколу, де було з'ясовано, що у випадку використання прозорихпроксі-серверів можлива підміна кешу передаваних даних з тим, що користувачі замість реальних даних отримуватимуть версію даних від зловмисника. Проблема виявилася досить серйозною для того, щоб розробники Firefox та Opera оголосили[7][8][9], що в майбутніх версіях їхніх браузерів підтримка вебсокетів буде за умовчанням відключена аж до усунення проблеми небезпеки цього протоколу (хоча залишилася можливість їх включити).

Нова версія-07 протоколу WebSocket, яка виправляє помилку протоколу, реалізована і включена по замовченню в Firefox 6[10] та у Chrome 14.[11]

Також існує командна опція для Google Chrome (--enable-websocket-over-spdy) що дозволяє ранню експериментальну реалізацію WebSocket черезSPDY.[12]

Виноски

[ред. |ред. код]
  1. RFC 6455
  2. IANA Uniform Resource Identifer (URI) Schemes. Iana.org. 14 листопада 2011.Архів оригіналу за 24 серпня 2010. Процитовано 10 грудня 2011.
  3. draft-hixie-thewebsocketprotocol-76 - The WebSocket protocol. Tools.ietf.org.Архів оригіналу за 17 липня 2013. Процитовано 10 грудня 2011.
  4. Katie Marsal (23 листопада 2010).Apple adds accelerometer, WebSockets support to Safari in iOS 4.2.AppleInsider.com.Архів оригіналу за 17 липня 2013. Процитовано 9 травня 2011.
  5. Web Sockets API. RIM. Архіворигіналу за 17 липня 2013. Процитовано 8 липня 2011.
  6. Архівована копія(PDF).Архів(PDF) оригіналу за 14 грудня 2010. Процитовано 14 грудня 2010.{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
  7. В Firefox 4 и Opera 11 будет заблокирована поддержка протокола WebSockets. Архіворигіналу за 11 січня 2011. Процитовано 25 грудня 2011.
  8. Chris Heilmann (8 грудня 2010).WebSocket disabled in Firefox 4.Hacks.Mozilla.org.Архів оригіналу за 17 липня 2013. Процитовано 9 травня 2011.
  9. Aleksander Aas (10 грудня 2010).Regarding WebSocket.My Opera Blog.Архів оригіналу за 17 липня 2013. Процитовано 9 травня 2011.
  10. Dirkjan Ochtman (27 травня 2011).WebSocket enabled in Firefox 6.Mozilla.org. Архіворигіналу за 26 травня 2012. Процитовано 30 червня 2011.
  11. Chromium Web Platform Status.Архів оригіналу за 17 липня 2013. Процитовано 3 серпня 2011.
  12. List of Chromium Command Line Switches. Peter.sh.Архів оригіналу за 17 липня 2013. Процитовано 10 грудня 2011.

Посилання

[ред. |ред. код]
Статті
  • WebSockets / Виктор Клим // htmlhook.ru. — 07.05.2012, оновлено 05.11.2016.
Можливості · стандарти · протоколи
Можливості
Вебстандарти
Протоколи
Діючі
На основіBlink
На основіGecko
На основіWebKit
Інші
Розробку припинено
На основіGecko
На основіMSHTML
На основіWebKit
Інші
Отримано зhttps://uk.wikipedia.org/w/index.php?title=WebSocket&oldid=45330889
Категорії:
Приховані категорії:

[8]ページ先頭

©2009-2026 Movatter.jp