如何向通过grpc双向流连接的客户端广播?

时间:2019-05-18 12:03:36

标签: grpc grpc-go

我是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?

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

例如,在创建客户列表并在其中进行通知时,该代码应该是什么?

1 个答案:

答案 0 :(得分:0)

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

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

这个项目非常有帮助。

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

通过这种方式,可以使用存储客户端流的映射(此处为map,但是可以切片或sync.Map。)

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