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

axcure做网站ui百度推广渠道代理

axcure做网站ui,百度推广渠道代理,删除wordpress缓存文件,复制源码+做网站系列文章目录 第一章 grpc基本概念与安装 第二章 grpc入门示例 第三章 proto文件数据类型 第四章 多服务示例 第五章 多proto文件示例 第六章 服务器流式传输 第七章 客户端流式传输 第八章 双向流示例 文章目录 一、前言二、定义proto文件三、编写server服务端四、编写client客…

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


文章目录

  • 一、前言
  • 二、定义proto文件
  • 三、编写server服务端
  • 四、编写client客户端
  • 五、测试
  • 六、示例代码


一、前言

了解了rpc服务器流式传输,客户端流式传输,也知道了对应的使用场景。本文开始介绍双向流,双向流其实就是客户端源源不断的发数据、内容给服务端,服务端源源不断的发数据、内容给客户端。其应用场景,最常见的就是即时通讯

二、定义proto文件

新建stream.proto文件

// 指定proto版本
syntax = "proto3";
// 指定默认包名
package each_proto;
// 指定golang包名
option go_package = "/each_proto";//定义个流服务,叫什么名字无所谓
service EachStream {//关键字streamrpc Chat(stream Request)returns(stream Response){}
}
//请求参数
message Request{string content = 1;
}//回调参数
message Response{string message =1;
}

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

protoc --go_out=. --go-grpc_out=. ./stream.proto

目录结构变更后为

具体步骤如下:

  • 1)定义请求message结构体Request,回调message结构体Response,使用string数据类型
  • 2)定义EachStream服务
  • 3)在服务里面,定义rpc方法Chat,使用关键词stream用于Request结构体、Response结构体

三、编写server服务端

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

编写server/main.go文件

package mainimport ("fmt""go_grpc_study/example_6/grpc_proto/each_proto""google.golang.org/grpc""log""net"
)// 新版本 gRPC 要求必须嵌入 UnimplementedGreeterServer 结构体
type EachStream struct {each_proto.UnimplementedEachStreamServer
}func (EachStream) Chat(stream each_proto.EachStream_ChatServer) error {for i := 0; i < 5; i++ {request, _ := stream.Recv()fmt.Println(request)stream.Send(&each_proto.Response{Message: fmt.Sprintf("第 %d 次回应你好", i+1),})}return nil
}func main() {// 监听端口listen, err := net.Listen("tcp", ":8080")if err != nil {log.Fatal(err)}// 创建一个gRPC服务器实例。server := grpc.NewServer()// 将server结构体注册为gRPC服务。each_proto.RegisterEachStreamServer(server, &EachStream{})fmt.Println("grpc server running :8080")// 开始处理客户端请求。server.Serve(listen)
}

具体步骤如下:

  • 1)定义1个结构体,结构体名称无所谓,必须包含each_proto.UnimplementedEachStreamServer 对象
  • 2)实现 .proto文件中定义的API即Chat 聊天方法
  • 3)通过stream对象的Recv()方法得到客户端发送的数据,循环5次读取,并依次回应给客户端
  • 4)将服务描述及其具体实现注册到 gRPC

四、编写client客户端

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

编写clinet/main.go文件

package mainimport ("context""fmt""go_grpc_study/example_6/grpc_proto/each_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()// 初始化客户端client := each_proto.NewEachStreamClient(conn)stream, err := client.Chat(context.Background())for i := 0; i < 5; i++ {stream.Send(&each_proto.Request{Content: fmt.Sprintf("第% d 次 打招呼", i),})response, err := stream.Recv()fmt.Println(response, err)}
}

具体步骤如下:

  • 1)首先使用 grpc.Dial()gRPC 服务器建立连接
  • 2)使用 each_proto.NewEachStreamClient(conn)初始化客户端
  • 3)通过客户端调用ServiceAPI方法client.Chat,并得到stream对象
  • 4)循环5次向服务器打招呼,并输出服务器的响应

五、测试

server目录下,启动服务端

go run main.go

clinet目录下,启动客户端

go run main.go

服务端运行结果

客户端运行结果

六、示例代码

go_grpc_study:grpc学习golang版


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

http://www.ds6.com.cn/news/34256.html

相关文章:

  • 靠比较软件下载大全app网站珠海seo推广
  • 做网站新闻移动动态网络营销推广方案ppt
  • 音乐主题wordpress湖南关键词优化排名推广
  • 做铝材什么什么网站好山东建站管理系统
  • 做a短视频网站产品免费推广网站有哪些
  • 时时彩做号网站学it需要什么学历基础
  • 做网站的服务器还需要空间吗郑州百度关键词seo
  • 太原市住房和城乡建设厅网站沈阳线上教学
  • 网站策划书我与音乐网站建设与管理属于什么专业
  • 门户网站 开发注意免费下载官方百度
  • wordpress二次开发手册chm百度seo怎么操作
  • 品牌商城网站建设营销文案
  • 河北省省住房和城乡建设厅网站百度高级搜索入口
  • 金泉网是做网站的吗关键词seo排名
  • 做威客网站有何前途指数基金怎么选
  • 上线了做网站价格贵北京seo公司工作
  • asp网站开发的背景与环境深圳网站关键词优化公司
  • 做venn图的网站seo优化是怎么回事呢
  • 潍坊专业网站建设哪家好产品软文范例1000字
  • url对网站有威胁怎么办上海网络推广服务
  • 网站制作公司新鸿儒宁波seo网页怎么优化
  • 做袜子娃娃的网站网络营销案例分析题及答案
  • seo职位描述天津seo培训
  • 武汉网站制作案例seo公司培训课程
  • 惠州做网站小程序seo引擎优化外包公司
  • 网站时间轴网络营销推广服务商
  • 昌平区事业单位公共知识培训网站网站推广工具有哪些
  • 网站建设与维护毕业论文安徽网络推广
  • 公司介绍网站模板百度产品大全首页
  • 标准网站sitemap.xml中小企业管理培训课程