Eugene Lisitsky Web Sockets

869 views
833 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
869
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Eugene Lisitsky Web Sockets

  1. 1. WebSockets Докладчик: Лисицкий Е. А. «Спорт Сегодня»
  2. 2. Структура доклада: <ul><li>Работа интерактивного веба </li></ul><ul><li>Преимущества WebSockets . </li></ul><ul><li>Сравнение со стандартными технологиями. </li></ul><ul><li>Техническая сторона вопроса </li></ul><ul><li>Примеры реализации </li></ul>
  3. 3. Схема работы: ТРАНСПОРТ СЕРВЕР КЛИЕНТ
  4. 4. Популярные языки: <ul><li>Erlang: MochWeb, Misultin </li></ul><ul><li>JavaScript: NodeJS </li></ul><ul><li>Perl: AnyEvent, Coro, POE </li></ul><ul><li>Python : Twisted, Tornado </li></ul><ul><li>Ruby: EventMachine и другие </li></ul>
  5. 5. Схема работы: ТРАНСПОРТ СЕРВЕР КЛИЕНТ
  6. 6. Интерактивность: <ul><li>Минимальная латентность </li></ul><ul><li>Асинхронность </li></ul>
  7. 7. Ограничения НТТР при интерактивной работе: <ul><li>Синхронность </li></ul><ul><li>Жесткое распределение «клиент»-ведущий и «сервер»-ведомый </li></ul><ul><li>Низкая эффективность при передаче большого количества маленьких по объему данных </li></ul>
  8. 8. Диаграмма работы НТТР КЛИЕНТ СЕРВЕР ВРЕМЯ
  9. 9. КПД НТТР КПД НТТР Comet ~ 5… 10 % кпд паровоза= 7%
  10. 10. Преимущества WebSockets <ul><li>Входит в HTML5, будет стандартом W3C; </li></ul><ul><li>Асинхронность; </li></ul><ul><li>Двунаправленная передача данных (full-duplex); </li></ul><ul><li>Низкие требования к сетевым ресурсам, максимальный КПД передачи данных, минимум «накладных расходов»; </li></ul><ul><li>Время жизни канала в неактивном состоянии; </li></ul><ul><li>Возможность работы с разными доменами; </li></ul><ul><li>Неограниченное количество подключений к одному домену. </li></ul><ul><li>Очень простое API (интерфейс) </li></ul>
  11. 11. Передача данных: АСИНХРОННОСТЬ FULL - DUPLEX
  12. 12. J ava S cript-объект: <ul><li>< script > </li></ul><ul><li>ws =  new  WebSocket( &quot;ws://site.com/demo&quot; ); </li></ul><ul><li>ws.onopen =  function () { alert( &quot;Connection opened...&quot; ) }; </li></ul><ul><li>  </li></ul><ul><li>ws.onclose =  function () { alert( &quot;Connection closed...&quot; ) }; </li></ul><ul><li>  </li></ul><ul><li>ws.onmessage =  function (evt) { alert(evt.data) }; </li></ul><ul><li>< /script > </li></ul>
  13. 13. GET-запрос <ul><li>GET /demo HTTP/1.1 </li></ul><ul><li>Upgrade: WebSocket </li></ul><ul><li>Connection: Upgrade </li></ul><ul><li>Host: site.com </li></ul><ul><li>Origin: http://site.com </li></ul>
  14. 14. Ответ сервера <ul><li>HTTP/1.1 101 Web Socket Protocol Handshake </li></ul><ul><li>Upgrade: WebSocket </li></ul><ul><li>Connection: Upgrade </li></ul><ul><li>WebSocket-Origin: http://site.com </li></ul><ul><li>WebSocket-Location: ws://site.com/demo </li></ul>
  15. 15. Text Data Frame <ul><li>0x00, <строка в кодировке UTF-8>, 0xFF </li></ul>
  16. 16. Binary Data Frame <ul><li>0x80, <длина - 1 или несколько байт>, < data > </li></ul><ul><li>GIF 1px, 43 байта : 0x80, 0x2B, < data > </li></ul><ul><li>160 байт: 0x80, 0x81, 0x20, < data > </li></ul>
  17. 17. Кодирование длины двоичных данных <ul><li> 0х81 0х20 </li></ul><ul><li>0 + 128 + 32 = 160 </li></ul>1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0
  18. 18. Пример: <ul><li>http://chat.websockets.ru </li></ul><ul><li>или </li></ul><ul><li>http :// sn.im / ws-chat </li></ul>
  19. 20. Joe Armstrong: <ul><li>« Comet is dead long live websockets » </li></ul>

×