/easydemo

gRPC完整例程

Primary LanguageGo

学习 gRPC

本项目的目标

  1. 学习如何编写 proto文件
  2. 一个 proto如何 import另外一个 proto,需要结合编译指令 -I参数,解读
  3. option go_package = "easydemo/proto/hellopb;hellopb"; 含义 easydemo/proto/hellopb表示输出目录,还需要结合-go_out编译参数,才能知道真实的输出目录,hellopb表示 *.go文件的包名(当然可以省略)自动用目录名作为包名
  4. protoc -I . --go_out=module=easydemo:. --go-grpc_out=module=easydemo:. proto/*.proto 编译指令和 *.proto文件有着内在的关系
-I--proto_path: 指定进行搜索依赖包的目录针对的是 *.proto文件可以指定多个例如 -I . -I ..  *.proto 文件中的 import 一起组成绝对的搜索路径

--go_out: 指定输出 Go 代码的目录默认为当前目录 *.proto 文件中的 go_package 一起组成绝对路径如果 存在--go_out=module 选项会将输出路径中的匹配的名字去掉】); go_package还有一层的意义当作为被其他 proto文件引入import的时候编译后生成的 *.go的引用路径

--go_opt: 参数为 module  paths
  1. 实现 grpc client/server
  2. 理解 streamclient/server 之间的双通道流,可以实现客户端和服务端之间的数据相互推送,底层是通过复用tcp连接
  3. 利用 stream实现文件发送sendfile到服务端