【问题标题】:Thrift: Send a message to all clients connected to the serverThrift:向连接到服务器的所有客户端发送消息
【发布时间】:2017-05-06 18:32:20
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: java c# thrift


    【解决方案1】:

    这个问题已经以各种方式多次asked。周围还有at least one yet unsolved JIRA ticket

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

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

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

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

    【讨论】:

    • 选项 2 看起来正是我正在寻找的。非常感谢:)
    【解决方案2】:

    由于您的服务器是 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

    【讨论】:

    • 值得一提的是,这两个都没有涉及 Thrift,但这些当然是解决根本问题的绝对有效的解决方案。是否适用由 OP 决定。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-13
    • 2017-05-15
    • 2015-06-20
    • 1970-01-01
    相关资源
    最近更新 更多