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

如何写代码做网站网页制作官方网站

如何写代码做网站,网页制作官方网站,网站建设 浏览器兼容,哪些网站可以做视频搬运系列文章目录 第一章 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.mnyf.cn/news/36245.html

相关文章:

  • 昆明营销型网站制作设计广州seo快速排名
  • 专业网站开发技术北京seo推广系统
  • 公司做网站的流程作图的步骤站长之家域名查询
  • 东莞三网合一网站制作网站优化平台
  • 电脑自带的做网站叫什么营销软文范例
  • 我有网站 怎么做淘宝推广的关键词快速排名seo怎么优化
  • js网站计数器代码智能建站abc
  • 企业网站建立步骤网络营销课程
  • 做网站费用多少抖音搜索引擎优化
  • 昆明网站外包上海广告推广
  • 网站建设用什么系统百度竞价推广收费
  • 西山区城市建设局网站宁波关键词排名优化
  • 常州网站推广州推动优化防控措施落地
  • 学校网站注重服务平台建设企业管理培训
  • 网站怎么做本地映射搜易网提供的技术服务
  • 做电影下载网站需要什么软件好优化大师卸载不了
  • 深圳高端保姆公司大型seo公司
  • 常见的分类信息网站有哪些360搜索引擎
  • 免费asp主机网站新网站快速收录
  • 房县网站建设百度一下你就知道搜索引擎
  • 运城建设网站百度网址大全 官网
  • 外贸都用什么网站crm网站
  • 跨境电商平台有哪些上市公司seo描述是什么意思
  • 做彩票网站需要境外网络营销广告案例
  • 自助建设手机网站如何快速推广一个app
  • 临清网站优化windows优化大师和360哪个好
  • 贵阳微网站社群营销活动策划方案
  • 产品网站建设建议品牌广告视频
  • 查网站服务器ip 被k百度网盘怎么找资源
  • 报纸门户网站建设方案专门看广告的网站