A tour of gRPC:06 - gRPC client straming 客户端流

在上一篇中,我们尝试了使用server straming 的调用形式,在创建了十个Laptop并发送了一个筛选条 件后,由server多次返回符合筛选条件的结果,并且验证了这种调用形式的跨语言调用能力。在本篇 中,我们将尝试使用client straming 即 client 发送多次内容,而server在接收完所以内容后,返回一次 响应。本次我们将利用client straming 这种调用形式实现图像传输的功能

go Client Straming call

1. 修改 laptop_sercice.proto 增加三个和上传图片相关的message 和一个 rpc 函数,运行make gen 生成代码

​2. 在service 下新建image_store.go 实现一个图像存储

 3. 在laptop_server.go 下添加imageStore 内容,并在NewLaptopServer中新增一个参数

​4. 将所有用到NewLaptopServer 和 store 的位置进行一下修改(test 和 main),运行一次单元测试

5. 实现laptop_server中的 UploadImage

​6. 重构、修改 client 包下的main 代码

​7. 在server包下的main.go代码

​8. 编写一个单元测试进行测试

​我们在项目的根目录下新建一个tmp文件夹,并存放一张命名为images.jpeg的图片。接下来,启动server和client尝试进行传输。

文件被正确且成功的传输了。观察server的log可以发现,如我们预期,图片是被分割发送的。我们可以计算一下 ,图片大小为6164,传输时分成了6个1024k和1个20k

Java Client Straming

1. 复制 go client Straming 中的laptop_service.proto 运行 mvn clean complie 对生成的代 码进行更新

2. 在 service 包下 创建一个ImageStore interface

​3. 在 service 包下 创建ImageSotre 实体类

​4. 在service 包下 创建 DiskImageStore实现上面的 ImageStore

​5. 在LaptopService 下实现uploadImage

​6. 修改 LaptopServer 中的 main 添加图片上传的内容

​7. 运行Java 的server 再运行 golang 的client 可以看到 img 文件下收到了golang客户端发来的图片

8. 修改LaptopClient 并添加Java 客户端内容

​9. 修改 LaptopService 增加一个最大上传限制

​同上,我们运行测试一下

​同样,文件被正确且成功的传输了。观察server 的 log 可以发现,如我们预期,图片是被分割发送的。计算一下 ,图片大小为 6164k ,传输时分成了 6 个 1024k 和 1个 20k

跨语言的 client straming call 测试

1. 运行 Java 的 server ,再运行 golang 的client

​2. 运行 go 的 server ,再运行 Java 的 client


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值