Доступ к частичному ответу с помощью AJAX или WebSockets?

Я использую некоторый клиентский код JavaScript, чтобы вытащить много данных JSON с веб-сервера через HTTP GET. Объем данных может быть большим, скажем 50 МБ. Это в локальной сети, так что это не проблема, но все равно занимает десять секунд или около того.

Чтобы сделать мой интерфейс более отзывчивым, я хотел бы обрабатывать ответ по частям, показывая данные в пользовательском интерфейсе, как только они становятся доступными (скажем, в МБ или в секунду). Совместимость браузера не проблема; пока он работает в последних версиях Chrome и Firefox, все будет в порядке. Однако я не могу изменить код сервера.

Возможно ли это сделать с помощью XMLHttpRequest, WebSockets или какой-либо другой технологии, о которой я не слышал?

XMLHttpRequest.responseText не является явно пустым, пока состояние равно LOADING :

Атрибут responseText должен возвращать результат выполнения этих шагов:

  1. Если состояние не LOADING или DONE, вернуть пустую строку и завершите эти шаги.
  2. Вернуть тело объекта текстового ответа.

Но я полагаю, что буферизация будет происходить на разных этапах пути, поэтому будет ли она работать, если я установлю таймер на периодический опрос responseText ?

Насколько я могу судить, для WebSockets требуется специальный протокол на стороне сервера, так что их нет.

Ограничение: Я не могу изменять код сервера.

6
задан Thomas 31 October 2011 в 10:30
поделиться