之前,我们讨论了 gRPC Unary API,您可以在此链接中查看。在本文中,我将介绍使用服务器流响应实现客户端和服务器 Go 应用程序的 gRPC 调用。
什么是服务器流 API?
- 得益于HTTP/2 ,Server Streaming RPC API 是一种新的 API 。
- 客户端将向服务器发送一条消息,并从服务器接收许多响应,可能是无限的。
- 流媒体服务器非常适合:
- 当服务器需要发送大量数据(大数据)时
- 当服务器需要将数据 推 送到客户端而没有客户端请求更多时(想想实时提要、聊天等)。
第 1 步:设置项目
第一步是安装 protoc gen go 库作为帮助您创建 gRPC 的库,运行以下命令:
$去安装google.golang.org/protobuf/cmd/protoc-gen-go@v1.26
$去安装google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1
之后,通过运行以下命令更新计算机上的 PATH:
$ export PATH="$PATH: $(去环境 GOPATH ) /bin"
第 2 步:创建原始文件
第二步,当然我们会创建proto文件,然后我们先定义request和response的内容,然后别忘了加上service的名字。您可以在下面的代码中看到:
创建质子文件后,我们将使用以下命令将文件生成为 gRPC 文件:
$ protoc greet/greetpb/greet.proto — go_out=plugins=grpc:.
当我们运行该命令时,gRPC 文件将自动创建,如下所示:
第 3 步:创建服务器文件
在我们创建质子文件之后,下一步是创建一个服务器文件,我把它放在 greet_server/server.go 文件夹中,这里是服务器的代码:
正如我们在上面看到的,有一个 main 函数作为运行 gRPC 服务器的 主要 函数,此外,还有一个 GreetManyTimes 函数,我们根据原型文件中的服务名称定义。
第 4 步:创建客户端文件
创建文件服务器后,下一步就是创建一个客户端文件,作为客户端,我们将在 greet_client/client.go 文件夹中创建该文件,代码内容如下:
就像文件服务器一样,在这个客户端中,我们还创建了一个 func main ,它对于作为客户端运行很有用,而 func doServerStreaming 对于从服务器调用 func GreetManyTimes很有用。
第 5 步:运行服务器和客户端
在最后一步,我们将尝试运行两个文件,即服务器和客户端,结果将如下图所示:
结论
我们用 gRPC 的概念做了一种 API,当然还有很多类型的 API 我们没有用 gRPC 的概念实现,你可以在我的 GitHub 账号 上看到这篇文章的完整代码,这些都是我的,如果对你有用,别忘了拍手分享这篇文章。