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

个人网站建设广州seo和网络推广

个人网站建设,广州seo和网络推广,行业门户网站运营方案,网站推广的网站系列文章目录 第一章 grpc基本概念与安装 第二章 grpc入门示例 第三章 proto文件数据类型 第四章 多服务示例 第五章 多proto文件示例 第六章 服务器流式传输 第七章 客户端流式传输 第八章 双向流示例 文章目录 一、前言二、定义proto文件2.1 公共proto文件2.2 语音唤醒proto文…

系列文章目录
第一章 grpc基本概念与安装
第二章 grpc入门示例
第三章 proto文件数据类型
第四章 多服务示例
第五章 多proto文件示例
第六章 服务器流式传输
第七章 客户端流式传输
第八章 双向流示例


文章目录

  • 一、前言
  • 二、定义proto文件
    • 2.1 公共proto文件
    • 2.2 语音唤醒proto文件
    • 2.3 人脸唤醒proto文件
    • 2.4 生成go代码
    • 2.5 注意
  • 三、编写server服务端
  • 四、编写Client客户端
  • 五、测试
  • 六、示例代码


一、前言

当项目大起来之后,会有很多个service,rpc,message(即服务,方法,结构体),这样阅读起来又困难,不同的业务服务都写在一个文件,又容易导致开发人员混乱。所以我们会需要将不同服务放在不同的proto文件中。同时也可以放一些公共的proto文件。最主要的目的就是方便阅读,查找,使用本质其实是生成的go文件放在同一个包下

二、定义proto文件

这里还是以唤醒服务为例,定义2个服务,语音唤醒人脸唤醒。我们都知道,唤醒服务入参需要一个人名name,出参的时候会有声音sound。这些就可以放在公共的proto里面,他们都是语音唤醒人脸唤醒的共同内容

2.1 公共proto文件

新建common.proto文件

// 指定proto版本
syntax = "proto3";
// 指定默认包名
package wake_grpc;// 指定golang包名
option go_package = "/wake_proto";//请求参数
message Request{string name = 1;
}
//响应参数
message Response{string sound = 1;
}

2.2 语音唤醒proto文件

前面我们说过,唤醒,不仅有语音唤醒,还有 人脸唤醒,这些都属于唤醒的服务。语音唤醒服务又分,狗叫声唤醒猫叫声唤醒坤叫声唤醒。所以这里我们把他们(即语音唤醒人脸唤醒)拆分开,不同业务做细分。
新建voice_wake.proto文件。关键词import引入公共proto文件

// 指定proto版本
syntax = "proto3";
// 指定默认包名
package wake_grpc;
// 指定golang包名
option go_package = "/wake_proto";
//引入公共proto文件
import "common.proto";//语音唤醒服务
service VoiceWakeService {//狗叫rpc DogBark(Request)returns(Response){}
}

2.3 人脸唤醒proto文件

正如我前面所说,把人脸唤醒也拆分出来,不同业务做细分。
新建face_wake.proto文件。关键词import引入公共proto文件

// 指定proto版本
syntax = "proto3";
// 指定默认包名
package wake_grpc;
// 指定golang包名
option go_package = "/wake_proto";
//引入公共proto文件
import "common.proto";//人脸唤醒服务
service FaceWakeService {//一巴掌rpc ASlap(Request)returns(Response){}
}

目录结构变更后为

2.4 生成go代码

go_grpc_study/example_3/grpc_proto目录下新建Terminal,执行生成文件,命令如下

protoc --go_out=. --go-grpc_out=. ./common.proto
protoc --go_out=. --go-grpc_out=. ./voice_wake.proto
protoc --go_out=. --go-grpc_out=. ./face_wake.proto

目录结构变更后为

2.5 注意

voice_wake.proto文件、face_wake.proto文件必须得加上package,并且要和import的package相同
还有值得一提的是,voice_wake.proto文件、face_wake.proto文件引入公共proto时,golang编译器会报红色警告。但
不影响后续的使用!
不影响后续的使用!
不影响后续的使用!

如下face_wake.proto文件,有知道如何解决报红色警告的,也可以评论留言。

三、编写server服务端

新建server目录,新建main.go文件
目录结构如下

编写server/main.go文件

package mainimport ("context""fmt"wake_grpc3 "go_grpc_study/example_3/grpc_proto/wake_proto""google.golang.org/grpc""google.golang.org/grpc/grpclog""net"
)// 新版本 gRPC 要求必须嵌入 UnimplementedGreeterServer 结构体
type VoiceWakeServer struct {wake_grpc3.UnimplementedVoiceWakeServiceServer
}
type FaceWakeServer struct {wake_grpc3.UnimplementedFaceWakeServiceServer
}func (VoiceWakeServer) DogBark(ctx context.Context, request *wake_grpc3.Request) (pd *wake_grpc3.Response, err error) {fmt.Println("语音唤醒入参:", request.Name)pd = new(wake_grpc3.Response)pd.Sound = "汪汪汪~"return
}func (FaceWakeServer) ASlap(ctx context.Context, request *wake_grpc3.Request) (pd *wake_grpc3.Response, err error) {fmt.Println("人脸唤醒入参:", request.Name)pd = new(wake_grpc3.Response)pd.Sound = "塞班~"return
}func main() {// 监听端口listen, err := net.Listen("tcp", ":8080")if err != nil {grpclog.Fatalf("Failed to listen: %v", err)}// 创建一个gRPC服务器实例。s := grpc.NewServer()// 将server结构体注册为gRPC服务。wake_grpc3.RegisterVoiceWakeServiceServer(s, &VoiceWakeServer{})wake_grpc3.RegisterFaceWakeServiceServer(s, &FaceWakeServer{})fmt.Println("grpc server running :8080")// 开始处理客户端请求。err = s.Serve(listen)
}

具体步骤如下:

  • 1)定义2个结构体,结构体名称无所谓,必须包含wake_grpc3.UnimplementedVoiceWakeServiceServerwake_grpc3.UnimplementedFaceWakeServiceServer 对象
  • 2)实现 .proto文件中定义的API,即DogBark狗叫方法ASlap一巴掌方法
  • 3)将服务描述及其具体实现注册到 gRPC 中

四、编写Client客户端

新建client目录,新建main.go文件
目录结构如下

编写clinet/main.go文件

package mainimport ("context""fmt"wake_grpc3 "go_grpc_study/example_3/grpc_proto/wake_proto""google.golang.org/grpc""google.golang.org/grpc/credentials/insecure""log"
)func main() {addr := ":8080"// 使用 grpc.Dial 创建一个到指定地址的 gRPC 连接。// 此处使用不安全的证书来实现 SSL/TLS 连接conn, err := grpc.Dial(addr, grpc.WithTransportCredentials(insecure.NewCredentials()))if err != nil {log.Fatalf(fmt.Sprintf("grpc connect addr [%s] 连接失败 %s", addr, err))}defer conn.Close()voiceClient := wake_grpc3.NewVoiceWakeServiceClient(conn)res, err := voiceClient.DogBark(context.Background(), &wake_grpc3.Request{Name: "王五",})fmt.Println(res, err)faceClient := wake_grpc3.NewFaceWakeServiceClient(conn)res, err = faceClient.ASlap(context.Background(), &wake_grpc3.Request{Name: "赵6",})fmt.Println(res, err)
}

具体步骤如下:

  • 1)首先使用 grpc.Dial() 与 gRPC 服务器建立连接
  • 2)使用 wake_grpc3.NewVoiceWakeServiceClient(conn)wake_grpc3.NewFaceWakeServiceClient(conn)初始化客户端
  • 3)通过客户端调用ServiceAPI方法voiceClient.DogBarkfaceClient.ASlap

五、测试

server目录下,启动服务端

go run main.go

clinet目录下,启动客户端

go run main.go

服务端运行结果

客户端运行结果

六、示例代码

go_grpc_study:grpc学习golang版


完成ヾ(◍°∇°◍)ノ゙

http://www.fp688.cn/news/141869.html

相关文章:

  • 地方门户网站赚钱seo的工作流程
  • 资源下载类网站源码搜搜
  • 网站建设作业怎么让关键词快速上首页
  • 白云企业网站建设深圳今天重大事件新闻
  • wordpress教程nginx上海seo推广公司
  • 做pc端网站哪家好河北seo技术
  • 网站和后台建设百度搜索引擎优化方式
  • 百色网站建设公司如何创建自己的网址
  • wordpress怎样搭建外贸网站网店
  • 旅行社应做哪些网站游戏推广平台哪个好
  • 东营网站开发在线seo诊断
  • 电子商务网站建设汉狮网页设计需要学什么
  • 外文网站制作seo网站优化培训班
  • 网站管理员招聘网站推广开户
  • 集宁做网站的公司站长工具seo综合查询网
  • 网站搭建费用计入什么科目东莞网站制作公司联系方式
  • 网站客服代码左右环球网疫情最新
  • 潍坊网站制作工具推广链接
  • 百度云架设网站百度软件中心下载
  • 企业网站建设方案 功能规划seo技巧与技术
  • 给手机开发网站福建seo网站
  • java 开发手机网站开发游戏优化是什么意思
  • 家居企业网站建设平台网络营销ppt案例
  • 做租房网站百度搜索风云榜小说
  • 商务网站开发考题杭州网站推广优化
  • 网站备案幕布中国seo网站
  • 数据库网站建设多少钱软文推广平台
  • 可以做淘宝推广的网站吗深圳seo优化排名公司
  • 中扶建设网站网址收录入口
  • 沈阳做平板网站百度seo培训公司