Может ли клиент HTTP / 2 прервать поток, отправив кадр HEADER в режиме двунаправленной потоковой передачи RP C? - PullRequest
0 голосов
/ 18 марта 2020

Предположим, у нас есть двунаправленный поток RP C, когда клиент отправляет несколько сообщений запроса (например, несколько кадров DATA), а сервер отвечает несколькими сообщениями ответа (например, несколько кадров DATA).

Насколько я понимаю, после завершения RP C сервер обычно отправляет фрейм HEADER с заголовком состояния, а также, возможно, некоторые заголовки трейлера, такие как grp c -status и grp c -message, чтобы отметить завершение обмена запросом / ответом.

Мой вопрос: предположим, сервер отправляет неверное ответное сообщение, может ли клиент отправить кадр HEADER с grp c -status и grp * 1019? * Заголовки сообщений для передачи информации об ошибке.

Причина, по которой я спрашиваю, заключается в том, что в коде сервера c ++ (созданном из определения protobuf) я изо всех сил пытаюсь найти способ удержать этого последнего кадра HEADER, отправленного клиентом для проверки значений заголовка сообщения grp c -status и grp c s.

Кроме того, после прохождения модульных тестов в проекте grp c кажется, что только сервер возвращает статус для RP C, что еще больше вызывает сомнения.

Однако я смог отправить кадр HEADER с клиента, но, исходя из вышесказанного, я не уверен, что это правильное поведение, даже если я смог это сделать.

Буду признателен если кто-то может уточнить это для меня, так как я довольно новичок в HTTP / 2 и gRP C.

1 Ответ

1 голос
/ 18 марта 2020

Кроме того, после прохождения модульных тестов в проекте grp c создается впечатление, что только сервер возвращает статус для RP C, что еще больше вызывает сомнения.

Правильно! В gRP C сервер отвечает за завершение RP C со статусом и необязательными конечными метаданными. Клиент никогда не отправляет статус на сервер. Клиент может указать, что он завершил отправку в потоке без статуса (что внутренне происходит путем отправки пустого фрейма данных с установленным флагом END_STREAM, но пользователям не нужно беспокоиться об этой детали). Клиент отправляет кадры HEADER только в начале RP C.

...