Download - Eugene Lisitsky Web Sockets
WebSockets
Докладчик: Лисицкий Евгений«Спорт Сегодня»
Структура доклада:1.Работа интерактивного веба 2.Преимущества WebSockets.3. Сравнение со стандартными
технологиями.4.Техническая сторона вопроса5.Примеры реализации
Схема работы:ТРАНСПОРТ
СЕРВЕР КЛИЕНТ
Популярные реализации:• Erlang: MochWeb, Misultin • JavaScript: NodeJS• Perl: AnyEvent, Coro, POE • Python: Twisted, Tornado• Ruby: EventMachine и другие
Схема работы:HTTP
ТРАНСПОРТ
СЕРВЕР
разные языки
КЛИЕНТ
JavaScript
Интерактивность:• Минимальная латентность
• Асинхронность
Ограничения НТТР при интерактивной работе:1. Синхронность
2. Жесткое распределение «клиент»-ведущий и «сервер»-ведомый
3. Низкая эффективность при передаче большого количества маленьких по объему данных
Диаграмма работы НТТРКЛИЕНТ
СЕРВЕР
ВРЕМЯ
ведущий
ведомый
КПД НТТРКПД НТТР Comet ~ 0,5…10 %
кпд паровоза= 7%
Преимущества WebSockets
1. Входит в HTML5, будет стандартом W3C2. Двунаправленная передача данных (full-
duplex)3. Асинхронность
Передача данных:АСИНХРОННОСТЬ
FULL
-
DUPLEX
Преимущества WebSockets
4. Низкие требования к сетевым ресурсам, максимальный КПД передачи данных,
минимум «накладных расходов»5. Время жизни канала в неактивном состоянии;6. Возможность работы с разными доменами;7. Неограниченное количество подключений к одному
домену.8. Очень простое API (интерфейс)
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…”);
GET-запрос GET /demo HTTP/1.1Upgrade: WebSocketConnection: UpgradeHost: site.comOrigin: http://site.com
Ответ сервераHTTP/1.1 101 Web Socket Protocol HandshakeUpgrade: WebSocketConnection: UpgradeWebSocket-Origin: http://site.comWebSocket-Location: ws://site.com/demo
Text Data Frame
0x00, <строка в кодировке UTF-8>, 0xFF
Binary Data Frame0x80, <длина - 1 или несколько байт>, <data>
GIF 1px, 43 байта : 0x80, 0x2B, <data>160 байт: 0x80, 0x81, 0x20, <data>
Кодирование длины двоичных данных 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
Пример:
http://chat.websockets.ruилиhttp://sn.im/ws-chat
Joe Armstrong:«Comet is dead long live websockets»
Евгений Лисицкий
www.websockets.ru
twitter.com/lisitsky