Использование персистентных соединений в...
DESCRIPTION
Презентация для UAWEB 2008TRANSCRIPT
Использование персистентных соединений в веб-приложениях
Александр КостюченкоUkr.net
Типовой поток выполнения
Browser
Web Server Application Storage
1
2 3
4
Типовой поток выполнениянеэффективендлявеб-приложенийкоторым требуется обрабатывать потоки событий.
Например:
Чаты, instant messaging Уведомления о состоявшихся событиях
(пр: получение нового сообщения) Демонстрация состояния
инициированного пользователем процесса (пр: прогресс-бар)
Мониторинг (пр: биржевые тикеры)
Типовой поток + события
Browser
Web Server Application Storage
1
2 3
4 Events
В чем проблема?
Запоздалая реакция Лишний трафик Нагрузка на сервер
Для получения свежих данных требуется регулярно опрашивать сервер.Снова и снова.
В чем проблема ? Конкретней!
Browser
Web Server Application Storage
1
2 3
4
1. Установление соединения
2. Инициализация приложения и авторизация
3. Соединение и работа с хранилищем
4. Лишний трафик ~1Кб/запрос
Решение
Персистентные (насколько это возможно) соединения
aka Comet Отказ от веб-сервера и/или хранилища
данных
Comet
© Caplin Systems Ltd
The New Buzzword. Blame Alex Russell.
Реализации
multipart/x-mixed-replace (MR) “Page streaming” (PS) “Service streaming” (SS) Limited SS (LSS) Multipart XMLHTTPRequest (MR/XHR) Server-sent Events (SSE) Flash Sockets
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--
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);}
Реализации - совместимость
MR PS SS LSSMR/
XHRSSE Flash
MSIE + + +*
Mozilla + + + + + +*
Opera +/- + + + + +*
Реализации - возможности
Error handling
Custom headers
ProxyCross-site
Duplex&binary
PS + +*
LSS + + +
Flash + + +/- +* +
О чем помнить
Все, кроме MR (и PS*), требуют JavaScript
Память не резиновая 1 соединение занято постоянно Suffering from buffering Same origin policy
А в это время на серверсайде…
Browser
Web Server Application Storage
1
2 3
4 Events
Эффективная архитектура
Browser
Sockets & Application Server
Events
Keywords
COMETd Bayeux Dojo Toolkit Liberator Sever, mod_pubsub Perl: POE, AnyEvent; Python: Twisted,
Medusa