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