В большинстве случаев использование http/2 push-уведомлений сервера — это упреждающая отправка файлов активов (таких как файлы javascript и css) в браузер. Мне интересно, можно ли использовать push-сервер http/2 для отправки динамической полезной нагрузки, такой как документы JSON, в клиентское приложение? В http://http2.github.io/http2-spec/index.html#PushResources об этом ничего не говорится. Кто-нибудь может рассказать об этом подробнее? Почему или почему нет?
Полезная нагрузка HTTP/2 Push JSON
Ответы (2)
HTTP/2 не предназначен для замены веб-сокетов, поскольку вы делаете запрос (например, веб-страницу) и можете вернуть несколько ресурсов (например, веб-страницу, CSS, необходимый для отображения веб-страницы, JavaScript, необходимый для запуска этой веб-страницы. .. и т.д.).
Таким образом, HTTP/2 не является действительно двунаправленным, поскольку он по-прежнему отвечает на первоначальный запрос.
Так что, если вы собираетесь отправить запрос JSON в ответ на первоначальный запрос, это нормально — это просто еще один ресурс, почти такой же, как CSS и javascript.
Однако, если вы намерены держать канал открытым для постоянной отправки дополнительных полезных данных JSON, чтобы поддерживать актуальность вашей страницы, то это не то, для чего предназначен HTTP/2. Вот для чего нужны веб-сокеты.
В этом вопросе есть некоторые дополнительные сведения о HTTP/2 по сравнению с веб-сокетами: Делает ли HTTP/2 веб-сокеты устаревшими ?
Да, вы можете использовать HTTP/2 Push для отправки любых типов ресурсов. Но имейте в виду следующее:
Как сказал BazzaDP, HTTP/2 Push не механизм push-уведомлений. Но HTTP/2 отлично подходит для длительных опросов, а затем у вас есть сжатие кодирования контента, шифрование, заголовки HTTP и управление потоком, поэтому в 90% случаев вы все равно можете и, вероятно, должны пропускать веб-сокеты. Обратите внимание, что при длительном опросе HTTP/2 Push не требуется. Также обратите внимание, что есть нечто, называемое Server. Отправленные события, которые являются поддерживаемой браузером версией длинного опроса.
HTTP/2 Push пока прозрачен для приложения. Это означает, что вы должны сделать Push и запрос ресурса из вашего приложения.
На данный момент приложению доступны только кэшируемые вещи. Это означает, что вам нужно установить заголовки кеша в динамически сгенерированном ответе JSON. Возможно, вы можете установить короткий срок действия или длинный, но с динамическим URL-адресом.