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