Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Eugene Lisitsky Web Sockets

909 views

Published on

  • Be the first to comment

  • Be the first to like this

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>

×