本文介绍物联网平台定义的安全隧道通信协议。
通信协议传输数据的封装方式如下图所示。
设备端和访问端均与安全隧道连接成功后,依赖安全隧道的通信协议进行设备的远程访问。设备端与访问端之间的通信、安全隧道内部的会话(Session)管理及Session内的数据通信,都基于通信协议中隧道帧实现。隧道帧为WebSocket中二进制类型数据帧的Payload。
您需在访问端应用程序和设备端目标应用中,自行设计和开发应用层通信协议,建立访问端与设备端的通信。
隧道帧包括以下两部分:
例如,Tunnel Header内容的字符串使用UTF-8编码转码成字节数组的长度为十进制的87,对应十六进制57,则高位字节为0x00,低位字节为0x57。
访问端发送创建Session的请求帧时,不需要传入该参数,物联网平台会根据收到的请求帧分配一个会话ID,并发送给设备端。其他类型的隧道帧,访问端和设备端均需要传递会话ID。
建议设备端和访问端均使用递增的帧ID,用于区分每个session_id会话中的通信数据。
设备端与访问端进行Session通信的流程图如下。
Session使用过程中,Tunnel Header中JSON数据和Tunnel Payload的配置,请参见下表。
创建Session成功时,由物联网平台生成,并发送给设备。
必须是设备端收到的对应Session创建时,物联网平台下发的session_id。
填充该Session创建时物联网平台生成的session_id。
填充该Session创建时物联网平台生成的session_id。
根据上文参数说明自定义。
必须是设备端收到的对应Session创建中的frame_id。
根据上文参数说明自定义。
根据上文参数说明自定义。
根据上文参数说明自定义。访问端指定业务类型后,设备端收到创建Session的请求时,才能根据业务类型连接到指定的设备端目标应用。
必须是设备端收到的对应Session创建中指定的service_type。
对应Session创建时指定的service_type。
参数说明,请参见下表《响应数据的payload参数说明》。
参数说明,请参见下表《关闭Session的payload参数说明》。
关注阿里云公众号或下载阿里云APP,关注云资讯,随时随地运维管控云服务