Grpc

实现流程图

资料

  • https://grpc.io/docs/quickstart/go/
  • https://studygolang.com/articles/16627

使用方法

make run

新建一个proto文件

syntax = "proto3";package chat;service ChatService {//发送消息rpc Send(SendRequest) returns (SendReply){};
}
//发送消息 请求结构体
message SendRequest {string content = 1;//发送内容
}
//发送消息 响应结构体
message SendReply {string msg = 1;//返回消息
}

GRPC服务端

package mainimport ("context""github.com/yezihack/grpc/simple/server/proto""google.golang.org/grpc""log""net""os"
)var (port = ":8008"
)func main() {log.SetOutput(os.Stdout)//新建一个tcp监听lis, err := net.Listen("tcp", port)if err != nil {log.Fatalln(err)}//起一个服务s := grpc.NewServer()// 注册反射服务 这个服务是CLI使用的 跟服务本身没有关系chat.RegisterChatServiceServer(s, &Chats{})log.Printf("server port %s start...\n", port)//启动服务if err = s.Serve(lis); err != nil {log.Fatalln(err)}
}//新建一个结构体,实现proto里定义的方法
type Chats struct {
}//实现proto方法
func (c *Chats) Send(ctx context.Context, in *chat.SendRequest) (*chat.SendReply, error) {out := chat.SendReply{Msg: "hello " + in.Content,}return &out, nil
}

客户端代码

package mainimport ("context""github.com/yezihack/grpc/simple/server/proto""google.golang.org/grpc""log""os"
)var (addrees = "localhost:8008"
)func main() {log.SetOutput(os.Stdout)conn, err := grpc.Dial(addrees, grpc.WithInsecure())if err != nil {log.Fatalln(err)}client := chat.NewChatServiceClient(conn)req := chat.SendRequest{Content: "world 2019",}reply, err := client.Send(context.Background(), &req)if err != nil {log.Fatalln(err)}log.Println(reply.Msg)}

代码归档: https://github.com/yezihack/grpc

转载于:https://www.cnblogs.com/300js/p/10863243.html

学习GRPC(一) 简单实现相关推荐

  1. WebGL(三)——学习Canvas及简单图形绘制

    WebGL(三)--学习Canvas及简单图形绘制 Canvas简介 canvas是HTML5新增的一个可以使用javascript脚本在其中绘制图像的HTML元素(容器),它可以用来制作图像.动画, ...

  2. python自训练神经网络_tensorflow学习笔记之简单的神经网络训练和测试

    本文实例为大家分享了用简单的神经网络来训练和测试的具体代码,供大家参考,具体内容如下 刚开始学习tf时,我们从简单的地方开始.卷积神经网络(CNN)是由简单的神经网络(NN)发展而来的,因此,我们的第 ...

  3. 学习了下简单的光照模型

    博客园 闪存 首页 新随笔 联系 管理 订阅 随笔- 50  文章- 53  评论- 57  学习了下简单的光照模型 龙书和SDK光照的例子也看到几个了,今天看<GPU 编程与CG 语言之阳春白 ...

  4. VC学习笔记:简单绘图

    VC学习笔记:简单绘图 SkySeraph Oct.29th 2009  HQU Email-zgzhaobo@gmail.com  QQ-452728574 Latest Modified Date ...

  5. 如何学习解剖学的简单方法

    如何学习解剖学的简单方法 我相信人体解剖学和生理学是掌握最困难的课题之一.它不仅是因为条款的巨大数量很难甚至背诵英语术语更不用说他们的拉丁文学名.我不得不学习解剖自己.我知道有多么痛苦,才有掌握一切. ...

  6. verilog学习:一个简单的入门verilog例子

    前言 之前的文章<如何学习verilog,如何快速入门?>中提到了verilog学习,只想传输一个观点:刚开始学习的时候,建议直接通过视频学习,当您有收获时,再去查阅书籍,把它们当成工具书 ...

  7. OGRE+CG学习日记[1]-简单的3D程序

    OGRE+CG学习日记[1]-简单的3D程序 终于有时间开始研究OGRE和CG这些3D技术方面的东西了 先对今天的成果进行一下简单介绍 ­ 创建一个OGRE窗口,在里面放入一个怪兽头模型 ­ 写一个输 ...

  8. 【贪玩巴斯】Unity3D初学圣经(一)——学习要求 Unity简单介绍 游戏引擎介绍 课程体系介绍 「1-1 到 1-4 」—— 2021年12月9日

    Unity3D初学圣经 一 --学习要求 & Unity简单介绍 & 游戏引擎介绍 & 课程体系介绍 本文对应视频P1 1-1 到P2 1-4 1.学习要求 2.Unity简单 ...

  9. PHP学习使用资源简单总结

    PHP学习使用资源简单总结 无聊一下,把我使用PHP这么长时间的一些资源总结一下,当然,资源都是国内的,不包括国外的 ,同时也感谢那些提供各种资源的人们. 1. [ PHP学习讨论 ] ● 超越PHP ...

最新文章

  1. 专题 14 IPC之共享内存
  2. hdu4974 简单题
  3. jQuery.merge与concat的区别
  4. Apache Shiro去掉URL中的JSESSIONID
  5. python学习(函数)
  6. DSP F28335的SCI模块
  7. JAVA 几种多线程的简单实例 Thread Runnable
  8. C#访问postgresql数据库类MyPostDB的实现
  9. 分布式网络游戏百万人同时在线服务器架构实现
  10. mysql 交互式和非交互式操作(interactive_timeout和wait_timeout)
  11. 2 Linux基本命令复习2
  12. 遗传算法原理及其在车辆路径规划中的应用
  13. adb shell中的am pm命令
  14. 定义由4条线和4个圆弧组成的Box类,绘制一个圆角矩形(可填充)。
  15. 浏览器输入url后经历的过程(详细)
  16. 2021-6-8-今日收获
  17. python9行代码_如何用9行Python代码编写一个简易神经网络
  18. 将远程桌面连接的快捷方式发送到电脑桌面上
  19. 五分钟掌握微信小程序轮播图
  20. 可再生能源虽好,也需电网配套跟上

热门文章

  1. js类型转换的各种玩法
  2. CSS样式:2、超出隐藏控制
  3. 【Java定时任务调度工具】Timer
  4. 第一视角玩无人机,parrot推出配备VR眼镜的bebop2
  5. 1038 一元三次方程求解
  6. MySQL服务器安装完之后如何调节性能
  7. AnyChat视频直播系统全面分析
  8. 我恨Safari!!!
  9. C语言中控制printf的打印颜色实例及vt100的控制符文档-转
  10. nginx php 104,记一次nginx 502排错经历:recv() failed (104: Connection reset by peer)