当前位置: 首页 > news >正文

昆明学校网站设计公司广西网站开发

昆明学校网站设计公司,广西网站开发,网站友情链接建设,北京天津网站设计制作多少钱前期准备 工具安装及使用 grpc开发 编写proto文件 proto文件是符合Protocol Buffers语言规范的数据交换协议文件,就像以前WebService定义服务时使用的XML文件。现在一般都是用proto3了,这里创建一个名为 hello.proto 的文件,放到项目的pr…

前期准备

工具安装及使用

grpc开发

编写proto文件

proto文件是符合Protocol Buffers语言规范的数据交换协议文件,就像以前WebService定义服务时使用的XML文件。现在一般都是用proto3了,这里创建一个名为 hello.proto 的文件,放到项目的proto目录下:

syntax = "proto3";option go_package="/proto";package Business;service Hello {rpc Say (SayRequest) returns (SayResponse);
}message SayResponse {string Message = 1;
}message SayRequest {string Name = 1;
}

这个协议很简单,有个名字为Hello的服务,提供一个名字为Say的rpc方法,这个方法有输入输出,输入信息中有一个名为Name的参数,输出信息中有一个名为Message的返回值。

生成grpc代码

在项目根目录执行执行: protoc --go_out=. --go-grpc_out=. ./proto/hello_grpc.proto

go mod init

# 初始化项目名为test
go mod init test# 安装依赖包
go mod tidy

服务端代码编写

// server.go
package mainimport ("context""fmt""net""test/proto""google.golang.org/grpc"
)type server struct {proto.UnimplementedHelloServer
}func (s *server) Say(ctx context.Context, req *proto.SayRequest) (*proto.SayResponse, error) {fmt.Println("request:", req.Name)return &proto.SayResponse{Message: "Hello " + req.Name}, nil
}func main() {listen, err := net.Listen("tcp", ":8001")if err != nil {fmt.Printf("failed to listen: %v", err)return}s := grpc.NewServer()proto.RegisterHelloServer(s, &server{})//reflection.Register(s)defer func() {s.Stop()listen.Close()}()fmt.Println("Serving 8001...")err = s.Serve(listen)if err != nil {fmt.Printf("failed to serve: %v", err)return}
}

客户端代码编写

// client.go
package mainimport ("bufio""context""fmt""os""test/proto""google.golang.org/grpc""google.golang.org/grpc/credentials/insecure"
)func main() {var serviceHost = "127.0.0.1:8001"conn, err := grpc.NewClient(serviceHost, grpc.WithTransportCredentials(insecure.NewCredentials()))if err != nil {fmt.Println(err)}defer conn.Close()client := proto.NewHelloClient(conn)rsp, err := client.Say(context.TODO(), &proto.SayRequest{Name: "test",})if err != nil {fmt.Println(err)}fmt.Println(rsp)fmt.Println("按回车键退出程序...")in := bufio.NewReader(os.Stdin)_, _, _ = in.ReadLine()
}

验证

# 安装依赖包
go mod tidy# 启动服务端代码
go run server.go
# Serving 8001...# 启动客户端代码
go run client.go
# Message:"Hello test"# 服务端输出
# request: test
http://www.dtcms.com/a/546389.html

相关文章:

  • videojs增加视频源选择框小工具
  • 锚文本外链查询网站vue做网站好吗
  • 做网站后台要做些什么国内it外包龙头企业
  • 企业商场网站建设谷歌浏览器手机版免费官方下载
  • IDEA报错:前言中不允许有内容
  • 案例分享--热负荷下的印刷电路板(PCB)测量--研索仪器VIC-3D非接触全场测量系统应用于电子消费领域
  • 仓颉语言中的内联函数优化策略探析
  • 网站后台管理系统怎么上传国外的调查网站上做问卷
  • 企业微信私域运营代运营:微盛AI・企微管家以四级分层服务助力企业私域落地与增长
  • 国内团购网站做的最好的是个人网站模板html5
  • Cell 与 RefCell:Rust 内部可变性的双生子解析
  • 东莞企业网站建设开发网站留言板带后台模板
  • Qt5 MSVC代码编译问题
  • Rust内存对齐与缓存友好设计深度解析
  • vue 做的pc端网站大同市网站建设
  • 黄仁勋GTC华盛顿主题演讲:加速计算与AI的下一个“阿波罗时刻”
  • 儿童早教网站模板做网站从哪方面入门
  • 微信小程序开发
  • seo如何网站正常更新传媒公司经营范围有哪些
  • 青岛网站制作计划三星网上商城app下载
  • 【UE5.3】自定义角色动画教程
  • 面签拍照 网站备案平台代运营
  • 网页制作与网站建设教程视频用手机如何制作网页链接
  • 太原cms模板建站建设工程施工合同条例
  • Excel(WPS表格)中多列去重就用Tocol+Unique组合函数
  • 做盗版小说网站赚钱嘛腾讯微信小程序官网
  • 做网站被攻击谁的责任建站用什么平台好
  • 建设上海网站培训课程表
  • 山东网站开发公司梅州市网站建设
  • 虚拟机ping不通百度的解决方法