grpc 介绍
gRPC 是一个高性能,开源和通用的 RPC 框架,基于 Protobuf 序列化协定开发,且反对泛滥开发语言。gRPC 基于以下理念:定义一个服务,指定其可能被近程调用的办法(蕴含参数和返回类型)。在服务端实现这个接口。并运行一个 gRPC 服务器来解决客户端调用。在客户端领有一个存根可能向服务端一样的办法。
dgiot_grpc_python 连贯
Dgiot 客户端
dgiot 通过 grpc 与其余语言互相通信以及函数调用。在 dgiot 中,以一个 grpc 通道解决所有交互。而 grpc 相干函数定义在 dgiot_dlink 下,分为 login,logout,send 三个函数。
login
login 函数用于登录 grpc 服务端,其参数为 ClinetId,为客户端编号。建设 grpc 通道后,将会在通道启动时以通道 id 为 ClinetId 登录 python 服务器。
send
send 函数用于向 python 客户端发送音讯。send 函数位于通道的 handle_message 函数中。在通道接管到音讯,并且匹配上 Message 中内容后即可依据音讯内容执行 send 函数调用 python 服务。
send 函数以 map 的格局发送音讯,音讯在发送前将通过 base64 编码。
logout
logout 函数用于断开与 python 服务的连贯,个别在通道的敞开函数 stop 中调用。
Python 程序文件
python 程序示例位于 apps\dgiot_dlink\priv\example\python3 目录下,其目录构造如下:
运行 dlink_server 文件即可启动 python 服务,接管信息函数位于 Dlink 类下 SayHello 办法。其接管 request 和 context 两个参数,参数含意如下:
- request:接管参数,request 下 name 属性为接管到的信息。
- context:接管参数,以后的环境
通过对 request.name 应用 base64 解码并转为字典后即可获取本来的信息。接管参数后通过 HelloReply 的 message 字段返回一条信息:
残缺交互后果如下图: