基于Socket.IO的物联网网关实时双向通信系统的制作方法

文档序号:17938594发布日期:2019-06-18 22:50阅读:1237来源:国知局
基于Socket.IO的物联网网关实时双向通信系统的制作方法

本发明涉及一种通信系统,尤其是涉及一种基于socket.io的物联网网关实时双向通信系统。



背景技术:

在传统物联网网关与物联网资源平台的通讯问题上,通信协议的选择有超文本传输协议http和消息队列遥测传输协议mqtt。http协议是采用“请求-响应”式的方式来实现具体通信。只有在客户端发起请求的情况下,服务器做出相应的响应,而服务器不能主动推送数据到客户端,其缺点是缺乏实时性。mqtt是轻量级基于代理的发布/订阅的消息传输协议,其设计思想是开放、简单、轻量、易于实现。这些特点使得它在处理器和内存资源有限的嵌入设备中运行,其缺点是带宽低、不可靠。

为了提高物联网网关与资源平台通信的实时性与数据传输速率,本文拟在所构建的物联网开放平台上,采用socket.io实时双向通信技术、node.js服务器搭建技术与redis数据库对数据的快速存取技术,设计实时双向性的物联网网关与资源平台的通信系统,以提高系统数据传输效率。



技术实现要素:

本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于socket.io的物联网网关实时双向通信系统。

本发明的目的可以通过以下技术方案来实现:

一种基于socket.io的物联网网关实时双向通信系统,包括云平台、物联网网关、多个物联网设备和多个移动终端,所述物联网网关分别与各物联网设备连接,并连接至云平台,所述云平台与各移动终端连接;

当物联网设备上线并接入物联网网关后,云平台生成对应的socket通道,所述socket通道对应于唯一识别码socket-id,通过在云平台维护当前在线的socket.id链表实现云平台的实时主动推送数据的功能。

所述物联网网关共设有多个,每个物联网网关连接有多个物联网设备。

所述系统中实现物联网网关认证和数据交互过程具体包括以下步骤:

步骤s1:收到上线发送认证请求后,判断对应的识别号是否为空,若为是,则创建识别码记录信息,反之,则执行步骤s2;

步骤s2:根据对应的记录信息获取网关数据及状态信息;

步骤s3:读取网关配置和设备列表,创建设备模型,并返回认证成功及设备模型到物联网网关;

步骤s4:与物联网网关进行数据交互。

所述创建识别码记录信息的过程具体为:生成随机数,保存设备标识码和随机数至缓存中。

所述设备标识码通过gid字段表示。

所述缓存为redis缓存。

所述步骤s2具体包括:

步骤s21:根据对应的设备标识码读取认证随机数,若失败,返回认证失败,反之执行步骤s22;

步骤s22:读取相应的网关数据,并得到加密的识别号;

步骤s23:解析识别号,若失败,返回认证失败,反之执行步骤s24;

步骤s24:读取网关状态信息。

所述识别号通过usrkey字段表示。

与现有技术相比,本发明具有以下有益效果:相比http协议而言,采用socket.io协议时传输数据效率、单位时间吞吐量更高,可以实现服务器端主动推送数据的功能,从而实现物联网网关与资源平台之间实时、双向通信,并且有效提高整个物联网通信系统的可靠性与稳定性,提高系统的效率。

附图说明

图1为本发明的结构示意图;

图2为服务器数据下发结构示意图;

图3为网关认证和数据交互过程示意图;

其中:1、云平台,2、物联网网关,3、物联网设备,4、移动终端。

具体实施方式

下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。

一种基于socket.io的物联网网关实时双向通信系统,如图1和图2所示,包括云平台、物联网网关、多个物联网设备和多个移动终端,物联网网关分别与各物联网设备连接,并连接至云平台,云平台与各移动终端连接;

当物联网设备上线并接入物联网网关后,云平台生成对应的socket通道,socket通道对应于唯一识别码socket-id,通过在云平台维护当前在线的socket.id链表实现云平台的实时主动推送数据的功能。

物联网网关共设有多个,每个物联网网关连接有多个物联网设备。

如图3所示,系统中实现物联网网关认证和数据交互过程具体包括以下步骤:

步骤s1:收到上线发送认证请求后,判断对应的识别号是否为空,若为是,则创建识别码记录信息,反之,则执行步骤s2;

步骤s2:根据对应的记录信息获取网关数据及状态信息,具体包括:

步骤s21:根据对应的设备标识码读取认证随机数,若失败,返回认证失败,反之执行步骤s22;

步骤s22:读取相应的网关数据,并得到加密的识别号;

步骤s23:解析识别号,若失败,返回认证失败,反之执行步骤s24;

步骤s24:读取网关状态信息。

步骤s3:读取网关配置和设备列表,创建设备模型,并返回认证成功及设备模型到物联网网关;

步骤s4:与物联网网关进行数据交互。

创建识别码记录信息的过程具体为:生成随机数,保存设备标识码和随机数至缓存中,设备标识码通过gid字段表示,缓存为redis缓存,识别号通过usrkey字段表示。

物联网开放平台与物联网网关:物联网开放平台,使用基于平台+网关的开放设备应用程序编程接口体系,通过统一的web服务展现给用户。该平台采用统一的资源描述方式和面向资源的架构,具备高效的数据事件引擎、高并发处理机制等特点。它为物联网提供开放的服务,完成对传感器数据的接入、管理、存储、处理及应用。通过在服务端上构建node.js环境,将javascript作为服务器端语言,利用其异步非阻塞特性,可运用在长连接、多请求的环境下。

物联网开放平台由物联网云平台、iot网关端和用户浏览器3部分组成。浏览器、云平台和iot网关构成架构系统。物联网云平台与iot网关建立通信连接,将iot网关的传感数据传输到云平台;用户浏览器建立各种物联网应用的人与物联网平台接口,实现web通信。通过socket.io技术构建iot网关与云平台的实时双向通信,完成传感数据的实时传输、设备管理和维护,并实现物联网网关物理实体数据模型与物联网平台注册的虚拟实体数据模型同步更新。物联网网关,作为连接底层设备与物联网资源平台的中间件,完成对底层设备数据的接入、管理、存储、处理及应用。

网关实时双向通信系统设计与实现:socket.io实现网关与平台之间设备验证、设备数据上传下发、设备心跳三大信息交互过程。设备认证的目的:一是对设备进行权限认证,二是获取平台端网关模型、设备模型到网关端。设备数据的上传下发,实现的是当有底层设备上线时,在设备认证的基础上,可将不同类型的数据传输到物联网资源平台,并存入数据库。同时,当平台数据模型更新需要推送数据给网关时,网关端也可以及时收到相应数据。从而实现网关与平台数据模型的同步。

采用socket.io协议实现物联网网关与资源平台的实时双向通信的设计,当每一个设备接入网关上线时,服务端会生成对应的socket通道。socket.io机制里提供了每一个socket的唯一识别码socket-id,通过在服务器端维护当前在线的socket.id链表实现服务器的实时主动推送数据的功能。socket.io服务器下有n个网关,每个网关下有n个设备。当资源平台数据数据模型更新时,可以通过在socket.io服务器维护的数据链表与mongodb数据库中前端用户注册生成的gid,devid,找到对应的socket下相应的网关与设备,从而进行数据下发。这里的socket.id在线网关id号存入redis缓存数据库中。

socket.io实现物联网网关与资源平台双向通信的路径:创建物联网网关服务器,设定相应的端口及ip地址;网关客户端访问ip地址建立与服务器的socket连接;当底层设备数据更新、设备首次认证、定时网关心跳时,通过socket.emit(‘事件名’,json格式数据名称)方法将数据传输到资源平台。同时当用户通过web端传送数据时,服务器可以实时将数据推送到网关端。

当有底层设备接入时,网关发送认证请求到服务器端,服务器端启动侦听,接收网关侧发送的数据。初次认证时,网关侧发送不携带userkey的请求认证包到平台侧,平台侧判断userkey是否为空,如果为空,生成认证随机数到保存到redis数据库中,如果不为空,根据gid从数据库中读取认证随机数,根据网关的userkey和随机数进行md5加密,得到加密的userkey。当解密的userkey和二次请求的userkey一致时认证成功,读取数据库中网关配置、设备列表,创建网关设备模型,返回认证成功及物理网关设备模型到网关侧,否则认证失败。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1