0

我使用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 代码更可取,但任何其他语言都可以)

4

1 回答 1

1

使用 Apache Thrift 无法进行双向消息传递。服务器总是对客户端请求做出反应(当然,单向除外)。如果您希望服务器回叫客户端,则客户端必须自己设置服务器。另一种选择可能是长时间运行的调用来模拟所需的行为。

我在 Github 上看到至少一个 fork 在做 Bidi-Messaging,但是

  • 我不知道这个/这些项目的状态是什么,并且
  • 这些东西不是 Apache Thrift 项目的一部分。

有很多 JIRA 票处理这个话题,但本质是 Thrift 在不久的将来不会支持这个,因为其中一个目标是简单,Bidi 本身并不简单,尤其是跨传输和语言。

所以有一些解决方案,但没有内置的方法可以自动为你做这件事。

于 2013-11-18T18:55:38.550 回答