首页 文章

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

提问于
浏览
1

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

谢谢 .

2 回答

  • 3

    这个问题已经多次以各种方式进行 . 周围也有at least one yet unsolved JIRA ticket .

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

    Option #1: 可以使用长轮询或类似机制来模拟它 . 当客户居住在浏览器中时,这尤其方便 .

    Option #2: 如果客户端不在浏览器中,建议的方法是让客户端启动自己的Thrift服务器,允许服务器创建回客户端的连接 .

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

  • 3

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

    其他更困难的方法是直接使用套接字:https://msdn.microsoft.com/en-us/library/w89fhyex(v=vs.110).aspx

相关问题