我是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?
我已经阅读了这些帖子,但是我想了解最佳做法。
例如,在创建客户列表并在其中进行通知时,该代码应该是什么?
答案 0 :(得分:0)
我把它写下来是因为它是自解决的。
https://github.com/rodaine/grpc-chat
这个项目非常有帮助。
type server struct {
ClientStreams map [string] chan chat.StreamResponse
}
通过这种方式,可以使用存储客户端流的映射(此处为map,但是可以切片或sync.Map。)
通过在打开流时将来自客户端的信息连接到结构,我们能够支持广播和管理连接数。