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字段返回一条信息:
残缺交互后果如下图: