【问题标题】:How can I broadcast to a client connected by a bi-directional stream with grpc?如何使用 grpc 向通过双向流连接的客户端广播?
【发布时间】:2019-10-05 12:20:23
【问题描述】:

我是grpc的第一个学者。我认为这是一个丑陋的问题。

使用 grpc-go 创建了一个简单的聊天应用程序。并且想要实现的东西是这样的。

@clientA、clientB、clientC中的每一个,都连接到serverA,并且有一个双向流连接。 比如要通知clientA、B、C,clientD已经连接到serverA,有什么样的实现方式?

How to broadcast in gRPC from server to client?

gRPC: How can I distinguish bi-streaming clients at server side?

我已阅读这些帖子,但我想了解最佳做法。

例如,当创建一个客户列表并在那里通知时,这应该是怎样的代码?

【问题讨论】:

    标签: grpc grpc-go


    【解决方案1】:

    我把它写下来是因为它可以自我解决。

    https://github.com/rodaine/grpc-chat

    这个项目很有帮助。

    type server struct {
        ClientStreams map [string] chan chat.StreamResponse
    }
    

    这样就可以使用一个存储客户端流的map,这里是map,但是可以使用slice或者sync.Map。

    通过在打开流时将来自客户端的信息连接到结构,我们能够支持广播和管理连接数。

    【讨论】:

      猜你喜欢
      • 2014-12-15
      • 1970-01-01
      • 1970-01-01
      • 2020-03-08
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      • 2016-12-02
      • 2017-04-12
      相关资源
      最近更新 更多