Пока я пишу сервис с использованием grpc, я пытаюсь сравнить http / 2 с веб-сокетом по механизму проталкивания на стороне сервера.
Я знаю, что для websocket клиент отправит запрос с помощью команды Upgrade: WebSocket and Connection: обновить заголовки на сервер и установить долгоживущее соединение. После этого сервер отправит данные бесплатно после установления соединения.
Но для grpc, так как он маршрутизируется по http / 2, со страницы вики, https://en.wikipedia.org/wiki/HTTP/2_Server_Push,, он говорит, что серверу нужно будет предсказать потенциальные запросы, которые клиент отправит, и отправить кадр PUSH_PROMISE на ранней стадии. насколько это возможно.
Вот мои два вопроса:
Означает ли это, что серверу также потребуется получить соответствующий ответ (запрос) от клиента в ответ на этот заголовок PUSH_PROMISE, чтобы решить, хочет ли клиент получить или отклонить определенный push-запрос?
В Grpc, если у меня потоковая передача на стороне сервера, скажем, отправлять сообщение каждые 1 секунду с сервера. Означает ли это, что серверу необходимо отправлять PUSH_PROMISE клиенту каждую 1 секунду или хотя бы до того, как каждый кадр данных, который сервер отправляет клиенту?