2

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

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

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

如何在 gRPC 中从服务器到客户端进行广播?

gRPC:如何区分服务器端的双流客户端?

我已经阅读了这些帖子,但我想知道最佳实践。

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

4

1 回答 1

0

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

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

这个项目很有帮助。

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

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

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

于 2020-05-01T09:21:51.160 回答