问题:
可以利用 gRPC 从服务器推送数据给客户?考虑一个发布/订阅模式,在服务器上有一个无限的响应流,在客户端上有一个永不停歇的例程,不断地从这个流中读取数据。
// Service proto service Service { rpc RegularChanges (Void) returns (stream Change) {} } // Server implementation func (self *MyServiceImpl) RegularChanges(in *pb.Void, stream pb.Service_RegularChangesServer) error { for { stream.Send(&pb.Change{Name:"toto", Description:"status changed"}) time.Sleep(d) } return nil } // Client for { change, err := streamChanges.Recv() if err != nil { // Handle error } else { // Process change } }
答案:
gRPC 专为此类用途而设计,促进客户端和服务器之间的发布/订阅模式。但是,应考虑某些注意事项:
以上是gRPC 能否以 Pub/Sub 模式将数据从服务器流式传输到客户端?的详细内容。更多信息请关注PHP中文网其他相关文章!