Использование персистентных соединений в...
description
Transcript of Использование персистентных соединений в...
![Page 1: Использование персистентных соединений в веб-приложениях](https://reader031.fdocuments.net/reader031/viewer/2022020716/5462d931b1af9fa13d8b4856/html5/thumbnails/1.jpg)
Использование персистентных соединений в веб-приложениях
Александр КостюченкоUkr.net
![Page 2: Использование персистентных соединений в веб-приложениях](https://reader031.fdocuments.net/reader031/viewer/2022020716/5462d931b1af9fa13d8b4856/html5/thumbnails/2.jpg)
Типовой поток выполнения
Browser
Web Server Application Storage
1
2 3
4
![Page 3: Использование персистентных соединений в веб-приложениях](https://reader031.fdocuments.net/reader031/viewer/2022020716/5462d931b1af9fa13d8b4856/html5/thumbnails/3.jpg)
Типовой поток выполнениянеэффективендлявеб-приложенийкоторым требуется обрабатывать потоки событий.
![Page 4: Использование персистентных соединений в веб-приложениях](https://reader031.fdocuments.net/reader031/viewer/2022020716/5462d931b1af9fa13d8b4856/html5/thumbnails/4.jpg)
Например:
Чаты, instant messaging Уведомления о состоявшихся событиях
(пр: получение нового сообщения) Демонстрация состояния
инициированного пользователем процесса (пр: прогресс-бар)
Мониторинг (пр: биржевые тикеры)
![Page 5: Использование персистентных соединений в веб-приложениях](https://reader031.fdocuments.net/reader031/viewer/2022020716/5462d931b1af9fa13d8b4856/html5/thumbnails/5.jpg)
Типовой поток + события
Browser
Web Server Application Storage
1
2 3
4 Events
![Page 6: Использование персистентных соединений в веб-приложениях](https://reader031.fdocuments.net/reader031/viewer/2022020716/5462d931b1af9fa13d8b4856/html5/thumbnails/6.jpg)
В чем проблема?
Запоздалая реакция Лишний трафик Нагрузка на сервер
Для получения свежих данных требуется регулярно опрашивать сервер.Снова и снова.
![Page 7: Использование персистентных соединений в веб-приложениях](https://reader031.fdocuments.net/reader031/viewer/2022020716/5462d931b1af9fa13d8b4856/html5/thumbnails/7.jpg)
В чем проблема ? Конкретней!
Browser
Web Server Application Storage
1
2 3
4
1. Установление соединения
2. Инициализация приложения и авторизация
3. Соединение и работа с хранилищем
4. Лишний трафик ~1Кб/запрос
![Page 8: Использование персистентных соединений в веб-приложениях](https://reader031.fdocuments.net/reader031/viewer/2022020716/5462d931b1af9fa13d8b4856/html5/thumbnails/8.jpg)
Решение
Персистентные (насколько это возможно) соединения
aka Comet Отказ от веб-сервера и/или хранилища
данных
![Page 9: Использование персистентных соединений в веб-приложениях](https://reader031.fdocuments.net/reader031/viewer/2022020716/5462d931b1af9fa13d8b4856/html5/thumbnails/9.jpg)
Comet
© Caplin Systems Ltd
The New Buzzword. Blame Alex Russell.
![Page 10: Использование персистентных соединений в веб-приложениях](https://reader031.fdocuments.net/reader031/viewer/2022020716/5462d931b1af9fa13d8b4856/html5/thumbnails/10.jpg)
Реализации
multipart/x-mixed-replace (MR) “Page streaming” (PS) “Service streaming” (SS) Limited SS (LSS) Multipart XMLHTTPRequest (MR/XHR) Server-sent Events (SSE) Flash Sockets
![Page 11: Использование персистентных соединений в веб-приложениях](https://reader031.fdocuments.net/reader031/viewer/2022020716/5462d931b1af9fa13d8b4856/html5/thumbnails/11.jpg)
Multipart/x-mixed-replace
aka “Server push” © Netscape ’95 2003: XMLHttpRequest.multipart = true
Content-Type: multipart/x-mixed-replace; boundary=“qwer123”
--qwer123Content-Type: text/plain
Dis is one half.--qwer23Content-Type: text/plain
Did you leave the room ?--qwer123--
![Page 12: Использование персистентных соединений в веб-приложениях](https://reader031.fdocuments.net/reader031/viewer/2022020716/5462d931b1af9fa13d8b4856/html5/thumbnails/12.jpg)
Server-sent Events
WebApps 1.0, HTML5 2006: Opera<event-source src=http://localhost/app/events.pl”/>
Content-Type: application/x-dom-event-stream
Event: event-namedata: whatever
addEventListener(‘event-name’,eventHandler);function eventHandler(event) { alert(event.data);}
![Page 13: Использование персистентных соединений в веб-приложениях](https://reader031.fdocuments.net/reader031/viewer/2022020716/5462d931b1af9fa13d8b4856/html5/thumbnails/13.jpg)
Реализации - совместимость
MR PS SS LSSMR/
XHRSSE Flash
MSIE + + +*
Mozilla + + + + + +*
Opera +/- + + + + +*
![Page 14: Использование персистентных соединений в веб-приложениях](https://reader031.fdocuments.net/reader031/viewer/2022020716/5462d931b1af9fa13d8b4856/html5/thumbnails/14.jpg)
Реализации - возможности
Error handling
Custom headers
ProxyCross-site
Duplex&binary
PS + +*
LSS + + +
Flash + + +/- +* +
![Page 15: Использование персистентных соединений в веб-приложениях](https://reader031.fdocuments.net/reader031/viewer/2022020716/5462d931b1af9fa13d8b4856/html5/thumbnails/15.jpg)
О чем помнить
Все, кроме MR (и PS*), требуют JavaScript
Память не резиновая 1 соединение занято постоянно Suffering from buffering Same origin policy
![Page 16: Использование персистентных соединений в веб-приложениях](https://reader031.fdocuments.net/reader031/viewer/2022020716/5462d931b1af9fa13d8b4856/html5/thumbnails/16.jpg)
А в это время на серверсайде…
Browser
Web Server Application Storage
1
2 3
4 Events
![Page 17: Использование персистентных соединений в веб-приложениях](https://reader031.fdocuments.net/reader031/viewer/2022020716/5462d931b1af9fa13d8b4856/html5/thumbnails/17.jpg)
Эффективная архитектура
Browser
Sockets & Application Server
Events
![Page 18: Использование персистентных соединений в веб-приложениях](https://reader031.fdocuments.net/reader031/viewer/2022020716/5462d931b1af9fa13d8b4856/html5/thumbnails/18.jpg)
Keywords
COMETd Bayeux Dojo Toolkit Liberator Sever, mod_pubsub Perl: POE, AnyEvent; Python: Twisted,
Medusa