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

网站开发的案例分析模板资源网站怎么做

网站开发的案例分析模板,资源网站怎么做,南京建设网站制作,discuz蓝色城市门户论坛网站模板grpc四种数据流 简介 1.简单模式 这种模式最为传统,即客户端发起一次请求,服务端响应一个数据,这和大家平时熟悉的rpc没什么区别,所以不在详细介绍 2.服务端数据流模式 这种模式是客户端发起一次请求#xff0c;服务端返回一段连续的数据流。典型的例子是客户端向服务端发…grpc四种数据流 简介 1.简单模式 这种模式最为传统,即客户端发起一次请求,服务端响应一个数据,这和大家平时熟悉的rpc没什么区别,所以不在详细介绍 2.服务端数据流模式 这种模式是客户端发起一次请求服务端返回一段连续的数据流。典型的例子是客户端向服务端发送一个股票代码服务端就把该股票的实时数据源源不断的返回给客户端。 3.客户端数据流模式 与服务端数据流模式相反这次是客户端源源不断的向服务端发送数据流而在发送结束后由服务端返回一个响应。典型的例子是物联网向服务器报送数据。 4.双向数据流模式 顾名思义这是客户端和服务端都可以向对方发送数据流这个时候双方的数据可以同时互相发送也就是可以实现实时交互。典型的例子是聊天机器人 proto文件代码编写 哪一方需要源源不断的返回数据,就在那一端的前面添加stream关键字,表示流 syntax proto3;option go_package../../common/stream/proto/v1; service Greeter {rpc GetStream(StreamReqData) returns (stream StreamResData); //服务端流模式rpc PutStream(stream StreamReqData) returns (StreamResData); //客户端流模式rpc AllStream(stream StreamReqData) returns (stream StreamResData); //双向流模式 }message StreamReqData {string data 1; }message StreamResData {string data 1; }服务端代码 除三种流模式实现代码外整体代码与之前的普通模式无异 服务端数据流模式: grpc生成的函数原型为: func GetStream(req *proto.StreamReqData, res proto.Greeter_GetStreamServer) errorproto.Greeter_GetStreamServer:使用方式类似于socket网络编程 客户端数据流模式: grpc生成的函数原型为: func PutStream(cliStr proto.Greeter_PutStreamServer) error双向数据流模式:grpc生成的函数原型为: func AllStream(allStr proto.Greeter_AllStreamServer) errorpackage mainimport (OldPackageTest/stream_grpc_test/protofmtgoogle.golang.org/grpcnetsynctime )const PORT :50052type server struct { }func (s *server) GetStream(req *proto.StreamReqData, res proto.Greeter_GetStreamServer) error {i : 0for {i_ res.Send(proto.StreamResData{Data: fmt.Sprintf(%v, time.Now().Unix()),})time.Sleep(time.Second)if i 10 {break}}return nil }func (s *server) PutStream(cliStr proto.Greeter_PutStreamServer) error {for {if a, err : cliStr.Recv(); err ! nil {fmt.Println(err)break} else {fmt.Println(a.Data)}}return nil }func (s *server) AllStream(allStr proto.Greeter_AllStreamServer) error {wg : sync.WaitGroup{}wg.Add(2)//启动两个协程,一发一收go func() {defer wg.Done()for {data, _ : allStr.Recv()fmt.Println(收到客户端消息 data.Data)}}()go func() {defer wg.Done()for {_ allStr.Send(proto.StreamResData{Data: 我是服务器})time.Sleep(time.Second)}}()wg.Wait()return nil }func main() {lis, err : net.Listen(tcp, PORT)if err ! nil {panic(err)}s : grpc.NewServer()proto.RegisterGreeterServer(s, server{})err s.Serve(lis)if err ! nil {panic(err)} } 客户端代码 客户端实现代码简单,大家自己阅读即可 package mainimport (contextfmtsynctimegoogle.golang.org/grpcOldPackageTest/stream_grpc_test/proto )func main() {conn, err : grpc.Dial(localhost:50052, grpc.WithInsecure())if err ! nil {panic(err)}defer conn.Close()//服务端流模式c : proto.NewGreeterClient(conn)res, _ : c.GetStream(context.Background(), proto.StreamReqData{Data: go})for {a, err : res.Recv() //如果大家懂socket编程的话就明白 send recvif err ! nil {fmt.Println(err)break}fmt.Println(a.Data)}//客户端流模式putS, _ : c.PutStream(context.Background())i : 0for {i_ putS.Send(proto.StreamReqData{Data: fmt.Sprintf(grpc %d, i),})time.Sleep(time.Second)if i 10 {break}}//双向流模式allStr, _ : c.AllStream(context.Background())wg : sync.WaitGroup{}wg.Add(2)go func() {defer wg.Done()for {data, _ : allStr.Recv()fmt.Println(收到客户端消息 data.Data)}}()go func() {defer wg.Done()for {_ allStr.Send(proto.StreamReqData{Data: go})time.Sleep(time.Second)}}()wg.Wait() }
http://www.hkea.cn/news/14591983/

相关文章:

  • 购买手机网站推荐合肥建设网站
  • 网站建设与维护1997年上海企业网站建设方案
  • 滨城网站开发武义建设局网站
  • 九江有哪些免费推广网站国模 wordpress
  • 建设网站公司哪里好用户关闭wordpress新闻
  • 0基础如何快速做网站有没有免费推广的app
  • 柳州网站建设排行榜淘客选品网站开发
  • 视频网站怎么赚钱如何实现网站建设服务
  • 永州城乡建设中等职业技术学校网站免费网页app一键生成软件
  • 做网站(信科网络)做软件app需要多少钱
  • 泉州商城网站开发设计雄安网站建设
  • 婚纱摄影东莞网站建设技术支持seo服务公司怎么收费
  • 衡阳网站推广排名wordpress手机端网站模板下载
  • 企业网站源代码免费下载上饶便宜的网站建设
  • 宿州学校网站建设大地资源免费视频观看
  • 自媒体网站建设论文青岛自助建站软件
  • 一流的福州网站建设做任务网站排行榜
  • 快速建设网站方案安康做企业网站的
  • 高校门户网站建设建议官方网站建设怎么样
  • 做邀请函用哪个网站好呢北京网站优化哪家公司好
  • 如何做电子商务网站网页制作正版网站
  • 江苏建设人才官方网站百度推广公司电话
  • 培训前端网站开发杭州网站排名优化
  • 电子商务网站建设公司彩票创建网站
  • 快速优化网站排名的方法浙江网站建设方案
  • 我想做个网站怎么做的网站域名重要吗
  • windows 做网站服务器wordpress strip_tags utf8
  • 制作网站的发展前景vue可以做pc端网站
  • dede网站 设置404 错误页面动漫制作专业专升本考什么专业
  • 专业网站优化价格大连网站建设价格