Клиент-сайд изобилует кучей различных транспортов, и зачастую непонятно, какой взять для решения той или иной задачи. В данной лекции рассказывается об особенности каждого транспорта и области применимости.
критичных данных – Прием огромных объемов данных • Плюсы – Дешевый способ – Доступен в любом браузере • Минусы – Невозможно отследить статус ответа и ошибки, только таймауты – Только GET – Не безопасный 0+ 0+ 0+ 0+ 3+
данных – Отправка файлов • Плюсы – Реализация очень проста – Доступен в любом браузере – Можно отправлять файлы – POST, GET • Минусы – Нет возможности подтвердить получение данных сервером 0+ 0+ 0+ 0+ 3+
– Long Polling • Плюсы – Не отличается от XHR (IE – XDomainRequest) – Это не костыль – Можно отследить ошибки и статусы ответа – Простая реализация поддержки на сервере – DELETE, GET, HEAD, OPTIONS, POST, PUT • Минусы – Не поддерживается многими старыми браузерами – Может блокироваться прокси-серверами 4.0 3.5 12 4.0 10
if ("withCredentials" in xhr) { return xhr; } if (typeof XDomainRequest !== "undefined") { return new XDomainRequest(); } } var xhr = requestFactory(); if (!xhr) throw new Error('CORS not supported'); xhr.open('GET', 'http://yandex.ru/', true); xhr.send(); http://jsfiddle.net/qyjnb/
совместимости со старыми браузерами – Приложения где данные передаются редко – Вам лень писать что-то другое • Плюсы – Это работает во всех браузерах – Самая простая реализация • Минусы – Приходится постоянно создавать соединения – Для отправки данных необходимо поднимать еще одно соединение – Проблема с одновременными запросами 1.0 0.6 8.0 1.2 5.0
времени получает данные – Для обратной совместимости со старыми браузерами • Плюсы – Использует HTTP протокол – Реализация на сервере достаточна проста – Может автоматически делать реконнект – Достаточно гибкий формат сообщений – 1 постоянное соединение с сервером • Минусы – Может неадекватно вести себя при физическом отключении от сети – Может только принимать данные – Не поддерживается IE – Может блокироваться прокси-серверами 6.0 6.0 9.0 5.0 –
– Очень много данных передается или передаются очень часто • Плюсы – 1 соединение на отправку и получение – Быстрый обмен данными – Бинарный формат • Минусы – Не HTTP – Сложно отлаживать – Может блокироваться прокси-серверами – 6 форматов протокола – Поддерживается далеко не всеми веб-браузерами 14.0 11.0* 8.0 6.0 10.0
JSONP – для контроля – Прогресс отправки – Результат отправки – Получение ссылки на файл • Плюсы – Работает везде • Минусы – Необходим контроль – Много дополнительных запросов 0+ 0+ 0+ 0+ 3+
без костылей – Только 1 запрос – Реализация на сервере проще чем Post2HiddenIframe + JSONP • Минусы – Не поддерживается всеми браузерами 13.0 3.6 12 5.1* 10.0*