grpc - grpc-go 如何处理取消示例
问题描述
我正在查看 grpc 示例,但我不明白这个示例。有人可以向我解释吗?
该示例位于:https ://github.com/grpc/grpc-go/blob/master/examples/features/cancellation/server/main.go#L52
func (s *server) BidirectionalStreamingEcho(stream pb.Echo_BidirectionalStreamingEchoServer) error {
for {
in, err := stream.Recv()
if err != nil {
fmt.Printf("server: error receiving from stream: %v\n", err)
if err == io.EOF {
return nil
}
return err
}
fmt.Printf("echoing message %q\n", in.Message)
stream.Send(&pb.EchoResponse{Message: in.Message})
}
}
有人可以解释一下这个执行的过程,它是怎么调用的?谢谢。
解决方案
客户端调用方法
stream, err := c.BidirectionalStreamingEcho(ctx)
所以服务器将开始通话BidirectionalStreamingEcho
推荐阅读
- apache-kafka - 明确指定 KSQL 流主题名称
- java - 如果为空,则使用 JPA/Hibernate 创建引用实体
- html - 如何在 Wagtail CMS 上将查询外部模型的上下文添加到另一个模型的模板
- c# - “数据连接的 TLS 会话未恢复或会话与控制连接不匹配”错误
- python - 需要将pdf提取到excel中
- javascript - 获取子元素或组件的焦点信息
- amazon-iam - 提供的角色没有足够的权限访问 CodeDeploy
- sql - SQL 查询以 JSON 格式为 SQLite 返回嵌套的对象数组
- templates - 模板不呈现任何内容,也没有错误,但状态为 200
- java - 春天。Spring 是如何管理 Controller 的