gRPC常见问题

2020-08-20 09:21

流式stream处理rpc函数要常驻内存,不能退出

下面这种写法可以正常运行

func (s *routeGuideServer) ListFeatures(rect *pb.Rectangle, stream pb.RouteGuide_ListFeaturesServer) error {
    for {
        stream.send()
    }
    return nil
}

下面这种写法,客户端会收到EOF

func (s *routeGuideServer) ListFeatures(rect *pb.Rectangle, stream pb.RouteGuide_ListFeaturesServer) error {
    go func(){
        for {
            stream.send()
        }
    }()
    return nil
}