Мне нужно создать двунаправленную связь между Android-приложением и сервером. Я видел примеры отправки сообщения на сервер, но не в другую сторону. Любая идея, как это можно сделать? Сервис? AsyncTask?Получение сообщений от gRPC на Android-приложении
1
A
ответ
0
Для этого случая, вам нужно будет сделать двунаправленную RPC в файле прото:
service MyService {
rpc MyStreamingCall(stream MyRequest)
returns (stream MyResponse);
}
Двунаправленные называют работу, вызывая myStreamingCall()
на сгенерированную заглушке, обеспечивая наблюдатель ответа и получить обратно запрос наблюдатель. Наблюдатель запроса может быть вызван вашим клиентом android для отправки сообщений на сервер. Когда сервер отвечает, ваш ответчик будет вызываться с сообщениями.
Пока ваш заглушка имеет канал, который был создан с помощью ManagedChannelBuilder.executor(), установленного в ваш собственный пул потоков, ответы будут вызываться в одном из его потоков. Вы можете сделать так:
ManagedChannelBuilder.forAddress("localhost", 443)
.executor(Executors.newCachedThreadPool())
.build();