Я использую некоторый клиентский код JavaScript, чтобы вытащить много данных JSON с веб-сервера через HTTP GET. Объем данных может быть большим, скажем 50 МБ. Это в локальной сети, так что это не проблема, но все равно занимает десять секунд или около того.
Чтобы сделать мой интерфейс более отзывчивым, я хотел бы обрабатывать ответ по частям, показывая данные в пользовательском интерфейсе, как только они становятся доступными (скажем, в МБ или в секунду). Совместимость браузера не проблема; пока он работает в последних версиях Chrome и Firefox, все будет в порядке. Однако я не могу изменить код сервера.
Возможно ли это сделать с помощью XMLHttpRequest, WebSockets или какой-либо другой технологии, о которой я не слышал?
XMLHttpRequest.responseText
не является явно пустым, пока состояние равно LOADING
:
Атрибут responseText должен возвращать результат выполнения этих шагов:
- Если состояние не LOADING или DONE, вернуть пустую строку и завершите эти шаги.
- Вернуть тело объекта текстового ответа.
Но я полагаю, что буферизация будет происходить на разных этапах пути, поэтому будет ли она работать, если я установлю таймер на периодический опрос responseText
?
Насколько я могу судить, для WebSockets требуется специальный протокол на стороне сервера, так что их нет.
Ограничение: Я не могу изменять код сервера.