我使用Apache Thrift来定义协议。我希望客户端从服务器接收异步消息。
service ServerService {
oneway void async_server_hello(1: string message_from_client);
string sync_server_hello(1: string message_from_client);
}
service ClientService { // how to use it from the server side?
oneway void async_client_hello(1: string message_from_server);
}
我知道如何连接到服务器,向服务器发送同步和异步消息,但我不知道如何从服务器向连接的客户端发送异步消息。
(Python或Erlang代码更可取,但任何其他语言都可以)
答案 0 :(得分:1)
Apache Thrift无法实现Bidi消息传递。服务器总是对客户端请求作出反应(当然除了单独)。如果您希望服务器重新调用客户端,则客户端必须在其上设置服务器。另一种选择可能是长时间运行的调用,以模拟所需的行为。
我至少看过one fork on Github doing Bidi-Messaging,但
有一堆JIRA门票处理这个主题,但实质上是Thrift不会在不久的将来支持这个,因为其中一个目标是简单性,Bidi本身并不是,特别是在运输和语言之间。
所以有解决方案,但没有内置方式可以自动为您完成。