GRPC Служба Java-сервера - PullRequest
0 голосов
/ 16 мая 2018

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

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Я решил эту проблему сегодня.Когда пользователь подписывается на поток, сохраните запрос на подписку и наблюдателя потока в списке массивов / обычном списке.Позже, когда вызывается какая-либо служба действий.Создайте новый экземпляр службы Stream (которая расширяет ServerStreamServiceGrpc.ServerStreamServiceImplBase) и вызовите нужную потоковую службу из этого нового экземпляра с параметрами из списка массивов.Вам не нужно использовать тот же экземпляр службы, который использовался для создания сервера.Когда пользователь отписывается от потока, просто удалите эту подписку также из списка массивов.Убедитесь, что onCompleted () не вызывается всякий раз, когда вы отправляете какие-либо данные из службы потоковой передачи, поскольку это приведет к прекращению подписки.Здесь потоковая передача относится к потоковой передаче на стороне сервера.

0 голосов
/ 16 мая 2018

Я не думаю, что это возможно. gRPC - протокол типа запрос / ответ. Клиент должен вызвать соответствующий RPC для потоковой передачи для сервера в поток.

...