eugene lisitsky web sockets

22
WebSocke ts Докладчик: Лисицкий Евгений «Спорт Сегодня»

Upload: rit2010

Post on 13-Dec-2014

2.648 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Eugene Lisitsky Web Sockets

WebSockets

Докладчик: Лисицкий Евгений«Спорт Сегодня»

Page 2: Eugene Lisitsky Web Sockets

Структура доклада:1.Работа интерактивного веба 2.Преимущества WebSockets.3. Сравнение со стандартными

технологиями.4.Техническая сторона вопроса5.Примеры реализации

Page 3: Eugene Lisitsky Web Sockets

Схема работы:ТРАНСПОРТ

СЕРВЕР КЛИЕНТ

Page 4: Eugene Lisitsky Web Sockets

Популярные реализации:• Erlang: MochWeb, Misultin • JavaScript: NodeJS• Perl: AnyEvent, Coro, POE • Python: Twisted, Tornado• Ruby: EventMachine и другие

Page 5: Eugene Lisitsky Web Sockets

Схема работы:HTTP

ТРАНСПОРТ

СЕРВЕР

разные языки

КЛИЕНТ

JavaScript

Page 6: Eugene Lisitsky Web Sockets

Интерактивность:• Минимальная латентность

• Асинхронность

Page 7: Eugene Lisitsky Web Sockets

Ограничения НТТР при интерактивной работе:1. Синхронность

2. Жесткое распределение «клиент»-ведущий и «сервер»-ведомый

3. Низкая эффективность при передаче большого количества маленьких по объему данных

Page 8: Eugene Lisitsky Web Sockets

Диаграмма работы НТТРКЛИЕНТ

СЕРВЕР

ВРЕМЯ

ведущий

ведомый

Page 9: Eugene Lisitsky Web Sockets

КПД НТТРКПД НТТР Comet ~ 0,5…10 %

кпд паровоза= 7%

Page 10: Eugene Lisitsky Web Sockets

Преимущества WebSockets

1. Входит в HTML5, будет стандартом W3C2. Двунаправленная передача данных (full-

duplex)3. Асинхронность

Page 11: Eugene Lisitsky Web Sockets

Передача данных:АСИНХРОННОСТЬ

FULL

-

DUPLEX

Page 12: Eugene Lisitsky Web Sockets

Преимущества WebSockets

4. Низкие требования к сетевым ресурсам, максимальный КПД передачи данных,

минимум «накладных расходов»5. Время жизни канала в неактивном состоянии;6. Возможность работы с разными доменами;7. Неограниченное количество подключений к одному

домену.8. Очень простое API (интерфейс)

Page 13: Eugene Lisitsky Web Sockets

JavaScript-объект:ws = new WebSocket("ws://site.com/demo");

ws.onopen = function() { alert("Connection opened...") }; ws.onclose = function() { alert("Connection closed...") }; ws.onmessage = function(evt) { alert(evt.data) };

ws.send(“Text…”);

Page 14: Eugene Lisitsky Web Sockets

GET-запрос GET /demo HTTP/1.1Upgrade: WebSocketConnection: UpgradeHost: site.comOrigin: http://site.com

Page 15: Eugene Lisitsky Web Sockets

Ответ сервераHTTP/1.1 101 Web Socket Protocol HandshakeUpgrade: WebSocketConnection: UpgradeWebSocket-Origin: http://site.comWebSocket-Location: ws://site.com/demo

Page 16: Eugene Lisitsky Web Sockets

Text Data Frame

0x00, <строка в кодировке UTF-8>, 0xFF

Page 17: Eugene Lisitsky Web Sockets

Binary Data Frame0x80, <длина - 1 или несколько байт>, <data>

GIF 1px, 43 байта : 0x80, 0x2B, <data>160 байт: 0x80, 0x81, 0x20, <data>

Page 18: Eugene Lisitsky Web Sockets

Кодирование длины двоичных данных 0х81 0х20

0 + 128 + 32 = 160

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

Page 20: Eugene Lisitsky Web Sockets
Page 21: Eugene Lisitsky Web Sockets

Joe Armstrong:«Comet is dead long live websockets»

Page 22: Eugene Lisitsky Web Sockets

Евгений Лисицкий

www.websockets.ru

[email protected]

twitter.com/lisitsky