Будет ли gRPC хорошим выбором, и возможно ли изящное завершение со стороны клиента? - PullRequest
0 голосов
/ 27 августа 2018

Мы пытаемся создать сервис для подписки на события, и рассмотрели различные технологии для решения этой проблемы. На первый взгляд gRPC выглядит так, как будто это может удовлетворить наши потребности, но мы наткнулись на некоторые проблемы.

Я думал, что клиент может выбрать подписку (идентификаторы и т. Д.), А затем вызвать операцию gRPC с потоковой передачей сервера. Эта операция создаст подписку, начнет опрос источника событий и затем отправит их обратно клиенту (на неопределенный срок).

Проблема возникает, когда мы хотим выключить клиент или изменить подписку. Я не смог найти подходящий способ изящно остановить пуш с сервера. Это существует? Или gRPC не самая лучшая технология, когда количество сообщений, отправляемых с сервера, неизвестно / неопределенно? Существуют ли другие технологии, которые лучше соответствуют нашим потребностям и имеют те же характеристики?

Ответы очень ценятся!

1 Ответ

0 голосов
/ 29 августа 2018

gRPC может хорошо работать для вашего случая.

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

Чтобы клиент получал каждое событие, отправляемое сервером, вы, вероятно, хотите, чтобы клиент регулярно получал сообщения на сервер.

...