Go grpc广播的正确方法是什么?

我正在尝试编写一个tcp服务器和多个tcp客户端。
该tcp服务器正在使用grpc流发送 到所有tcp客户端。
我当前的解决方案是:
在grpc客户端代码上,只需连接到grpc流。
在grpc流服务器代码上:: </ p>

  func(  s * rpcServer)DataStream(req * pb.SearchRequest,stream pb.SearchService_DataStreamServer)错误{
为{
,如果有数据,可以:= myMapData [req.ID]; ok {
stream.Send(data)
}
time.Sleep(time.Second)
}
}
</ code> </ pre>

此方法基于 定期更新。 如果我为某些订户创建新数据然后发送给他们,是否有更好的方法?</ p>
</ div>

展开原文

原文

I'm trying to write a tcp server and multiple tcp clients. The tcp server is use grpc stream to send to all tcp client. My current solution is: On the grpc client code, just connect to the grpc stream. On the grpc stream server code::

func (s *rpcServer) DataStream(req *pb.SearchRequest, stream pb.SearchService_DataStreamServer) error {
  for {
    if data, ok := myMapData[req.ID]; ok {
      stream.Send(data)
    }
    time.Sleep(time.Second)
  }
}

This method is based on period time update. Is there better method if I create new data for some subscriber, then just send them?

douyi4544
douyi4544 只是搜索观察者模式,那里有很多描述它的代码和文章。它几乎涵盖了@bserdar所描述的内容。
11 个月之前 回复
doubi12138
doubi12138 您是否存在用于演示此概念的类似代码?
11 个月之前 回复
dprlv04662
dprlv04662 grpc中没有广播或发布/订阅。您必须保留所有已连接客户端的列表。每个客户端连接将在服务器上创建一个单独的流。如果您有一个订阅者的数据,则必须保留所有活动订阅者的地图,并将数据写入该订阅者的流。
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐