【发布时间】:2015-11-04 18:57:24
【问题描述】:
我需要在 Android 应用和服务器之间创建双向通信。 我已经看到了向服务器发送消息的示例,但没有看到其他方式。 知道如何做到这一点吗?服务?异步任务?
【问题讨论】:
我需要在 Android 应用和服务器之间创建双向通信。 我已经看到了向服务器发送消息的示例,但没有看到其他方式。 知道如何做到这一点吗?服务?异步任务?
【问题讨论】:
对于这种情况,您需要在您的 proto 文件中创建一个双向 RPC:
service MyService {
rpc MyStreamingCall(stream MyRequest)
returns (stream MyResponse);
}
双向调用通过在生成的存根上调用myStreamingCall() 来工作,提供响应观察者并取回请求观察者。可以从您的 android 客户端调用请求观察器以将消息发送到服务器。当服务器响应时,将使用消息调用您的响应观察者。
只要您的存根有一个通过将 ManagedChannelBuilder.executor() 设置为您自己的线程池而构建的 Channel,就会在其线程之一上调用响应。你可以这样做:
ManagedChannelBuilder.forAddress("localhost", 443)
.executor(Executors.newCachedThreadPool())
.build();
【讨论】: