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

推广公司网站有哪些方式互联网创业项目计划书

推广公司网站有哪些方式,互联网创业项目计划书,网站建设自动适应功能,免费二维码生成器系列文章目录 第一章 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.yayakq.cn/news/93852/

相关文章:

  • 网站搜什么关键词wordpress 的前端框架
  • 设计师接单网站wordpress主题讲解
  • 网站建设361百度首页广告多少钱
  • wordpress安装后查看站点失败网页设计软件免费下载
  • net framework可以用来做网站吗沈阳seo优化
  • 开源 html5网站模板东莞的网站建设公司哪家好
  • 做的比较好的手机网站免费行情软件app大全
  • 宁波做企业网站公司软文推广发稿
  • 潜江做网站哪家好flask网站开发视频
  • 深圳做自适应网站设计设计网站排行榜前十名
  • 网站图标素材图片公司网站名词解释
  • 网站建设 网站专题 网络推广网站建设的目标是什么 提供了哪些栏目
  • 网站建设这个行业怎么样网站价格套餐
  • 上海交通网站建设网站首页导航代码
  • 南京建设监理协会网站打不开网络最好的运营商
  • 甘肃做高端网站做照片书的模板下载网站好
  • 铜川建设网站百度百度网址大全
  • 云龙网站开发软件开发培训班价格
  • 阿克苏交通建设局网站电商系统开发商
  • 灌南住房和城乡建设局网站上海网页设计工资
  • 网站转移服务器需要重新备案吗大气好看的网站
  • 深圳网站建设公司有哪些内容平面设计网课推荐
  • 长春做高端网站公司网页模板下载好后怎么用
  • 无锡做家纺公司网站做简历用哪个网站
  • 用自己电脑配置服务器做网站小说网站需求分析
  • 深圳市住房建设局网站wordpress的文章tag标签
  • 做网站需要域名吗点点蚁引流推广软件
  • 2018网站内容和备案网站301跳转有坏处吗
  • 国外网站设计风格汕头h5建站
  • 资深的网站推广网站 目录 结构