Thrift:向连接到服务器的所有客户端发送消息

Thrift: Send a message to all clients connected to the server

我使用 Thrift 框架编写了一个客户端服务器程序,因为服务器是用 C# 编码的并且客户端在 Java.My 问题是,如何使用 Thrift 制作消息监听器?例如,我的程序有一个列表,当一个客户端连接到它时,服务器会向每个客户端发送该列表。如果我有三个客户端连接到服务器,并且其中一个修改了该列表(在服务器启动之前声明),我如何通知其余客户端该列表已被修改?

谢谢。

由于您的服务器使用 C#,您可以尝试使用 SignalR: https://www.codeproject.com/Articles/633378/ASP-NET-SignalR-Basis-Step-by-Step-Part

另外一种比较难的方法是直接使用Sockets: https://msdn.microsoft.com/en-us/library/w89fhyex(v=vs.110).aspx

这个问题已经 asked a number of times in various ways. There is also at least one yet unsolved JIRA ticket 了。

目前一般的答案是,鉴于目前的现状:没有内置的方式,但确实有一些可行的替代方案:

选项 #1: 可以使用长轮询或类似机制来模拟它。当客户使用浏览器时,这尤其方便。

选项 #2: 如果客户端不在浏览器中,推荐的方法是让客户端启动自己的 Thrift 服务器,允许服务器创建连接返回给客户端。

选项 #3: 关于@Rui 的评论:Thrift 既是序列化框架又是 RPC 框架。这提供了仅使用它的序列化部分并以不同方式传输消息的选项,即使在 Thrift RPC 之外。我们用消息总线系统做到了这一点,而且效果很好。