物联网中消息传递方法和装置与流程

文档序号:12692871阅读:332来源:国知局
物联网中消息传递方法和装置与流程

本发明涉及计算机技术领域,特别是涉及一种物联网中消息传递方法和装置。



背景技术:

随着信息技术的快速发展,物联网成为新一代信息技术的重要组成部分。在物联网系统中,物品和物品之间通过互联网连接,物品之间可通过互联网进行消息交换和通信。

传统的物联网消息传递中,多采用MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)通讯协议。MQTT协议是一个即时通讯协议,采用轻量级发布和订阅消息传输机制,相比于其他通讯协议,MQTT协议更为简约、易于使用,特别适用于网络带宽低、网络延迟高、网络通信不稳定等受限环境中。MQTT协议作为重要的物联网传输协议,支持所有平台。MQTT协议支持三种消息发布服务质量。其中,QoS(Quality of Service,服务质量)=0,消息发送完即丢弃,会导致消息丢失或重复;QoS=1,消息发送后需要确认回复,确保消息到达,可能导致消息重复;QoS=2,消息发送后需要确认回复,确保消息到达一次。但在物联网环境中,由于网络带宽低、网络延迟高和网络通信不稳定等因素,常造成消息传递缓慢,MQTT协议中三种消息发布服务质量所发送的消息指令执行情况具有不确定性。



技术实现要素:

基于此,有必要针对物联网环境中,传统MQTT协议中三种消息发布服务质量所发送的消息指令执行情况具有不确定性的问题,提供一种提高消息指令执行情况的确定性的物联网中消息传递方法和装置。

一种物联网中消息传递方法,包括:

接收通过MQTT协议传输的消息指令,所述消息指令中包括消息发送端信息、消息执行端信息、时间戳和超时时间信息;

根据所述消息指令中时间戳和超时时间信息检测所述消息指令是否超时;

若所述消息指令已超时,根据所述消息指令中消息执行端信息检测当前终端是否为消息执行端;

若所述消息指令已超时且当前终端是消息执行端,则放弃执行所述消息指令,并根据所述消息发送端信息将超时提示信息发送给消息发送端;

若所述消息指令已超时且当前终端不是消息执行端,则中断传输所述消息指令,并根据所述消息发送端信息将超时提示信息发送给消息发送端。

在一个实施例中,所述消息指令中还包括消息传递路径信息,所述方法还包括:

若所述消息指令未超时,根据所述消息指令中消息执行端信息检测当前终端是否为消息执行端;

若所述消息指令未超时且当前终端是消息执行端,则执行所述消息指令;

若所述消息指令未超时且当前终端不是消息执行端,则根据所述消息传递路径信息传递所述消息指令。

在一个实施例中,所述方法还包括:

若当前终端存在已超时消息指令,将接收的所述消息指令覆盖所述已超时消息指令。

在一个实施例中,所述方法还包括:

向服务器发起时间同步请求;

接收所述服务器返回的所述时间同步请求的响应结果,根据所述响应结果进行时间同步。

在一个实施例中,所述向服务器发起时间同步请求还包括:

根据预设的时间间隔定期向服务器发起时间同步请求。

一种物联网中消息传递装置,包括:

接收模块,用于接收通过MQTT协议传输的消息指令,所述消息指令中包括消息发送端信息、消息执行端信息、时间戳和超时时间信息;

第一检测模块,用于根据所述消息指令中时间戳和超时时间信息检测所述消息指令是否超时;

第二检测模块,用于若所述消息指令已超时,根据所述消息指令中消息执行端信息检测当前终端是否为消息执行端;

执行模块,用于若所述消息指令已超时且当前终端是消息执行端,则放弃执行所述消息指令,并根据所述消息发送端信息将超时提示信息发送给消息发送端;若所述消息指令已超时且当前终端不是消息执行端,则中断传输所述消息指令,并根据所述消息发送端信息将超时提示信息发送给消息发送端。

在一个实施例中,所述消息指令中还包括消息传递路径信息,所述第二检测模块还用于若所述消息指令未超时,根据所述消息指令中消息执行端信息检测当前终端是否为消息执行端;

所述执行模块还用于若所述消息指令未超时且当前终端是消息执行端,则执行所述消息指令;若所述消息指令未超时且当前终端不是消息执行端,则根据所述消息传递路径信息传递所述消息指令。

在一个实施例中,所述装置还包括:

覆盖模块,用于若当前终端存在已超时消息指令,将接收的所述消息指令覆盖所述已超时消息指令。

在一个实施例中,所述装置还包括:

请求模块,用于向服务器发起时间同步请求;

所述接收模块还用于接收所述服务器返回的所述时间同步请求的响应结果,根据所述响应结果进行时间同步。

在一个实施例中,所述请求模块还用于根据预设的时间间隔定期向服务器发起时间同步请求。

上述物联网中消息传递方法和装置,通过在MQTT协议传输的消息指令中设置时间戳和超时时间信息,可根据时间戳和超时时间信息判断接收到的消息指令是否超时,并将超时消息指令中断传输、超时提示信息反馈给消息发送端,使得超时消息指令不会被执行或继续传递下去,节省了网络传输流量、降低了网络拥堵的风险,对消息指令增加超时时间判断,提高了通过MQTT协议传输的消息指令执行情况的确定性。

附图说明

图1为一个实施例中物联网中消息传递方法的应用环境示意图;

图2为一个实施例中物联网中消息传递方法的流程图;

图3为另一个实施例中物联网中消息传递方法的流程图;

图4为另一个实施例中物联网中消息传递方法的流程图;

图5为一个实施例中物联网中消息传递装置的结构框图;

图6为另一个实施例中物联网中消息传递装置的结构框图;

图7为另一个实施例中物联网中消息传递装置的结构框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

可以理解,本发明所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本发明的范围的情况下,可以将第一检测模块称为第二检测模块,且类似地,可将第二检测模块称为第一检测模块。第一检测模块和第二检测模块两者都是检测模块,但其不是同一检测模块。

图1为一个实施例中物联网中消息传递方法的应用环境示意图。如图1所示,该应用环境包括第一终端110、服务器120、第二终端130。第一终端110与第二终端130之间可通过互联网连接,第一终端110和第二终端130之间可进行消息交换和通信,第一终端110可通过互联网连接服务器120,第二终端130可通过互联网连接服务器120。第一终端110将消息指令发送给第二终端130,第二终端130根据消息指令中信息对消息指令进行检测,并根据不同的检测结果执行相应的操作;第一终端110可向服务器120发起时间同步请求,并根据服务器120返回的时间同步请求的响应结果进行时间同步;第二终端130可向服务器120发起时间同步请求,并根据服务器120返回的时间同步请求的响应结果进行时间同步。其中,第一终端110为能接入网络且能发送消息指令的设备,如移动智能终端、车载智能终端、可穿戴设备和个人数字助理等。第二终端130为能接入网络且能接收消息指令的设备,如带有RFID(Radio Frequency Identification,射频识别)标签的电冰箱、带有RFID标签的洗衣机和带有RFID标签的空调等。

图2为一个实施例中物联网中消息传递方法的流程图。如图2所示,一种物联网中消息传递方法,运行于图1中的第二终端,包括:

S202,接收通过MQTT协议传输的消息指令,消息指令中包括消息发送端信息、消息执行端信息、时间戳和超时时间信息。

其中,时间戳是一个字符序列,用于唯一的标识消息指令发送的时刻,例如,消息发送端发送消息指令的时刻为10:00:01,则消息指令中时间戳记录消息指令发送时刻为10:00:01。超时时间信息是指消息指令能被执行的超时绝对时间和/或超时时间间隔。消息发送端是指发送消息指令的终端。消息执行端是指执行消息指令的终端。

第二终端接收消息发送端通过MQTT协议发送的消息指令或中间节点通过MQTT协议传递的消息指令。其中,中间节点是指消息发送端和消息执行端之间传递消息指令的终端。第二终端可为中间节点或消息执行端。

S204,根据消息指令中时间戳和超时时间信息检测消息指令是否超时。

具体地,终端根据消息指令中时间戳和超时绝对时间来检测消息指令是否超时,超时绝对时间是指消息指令能被执行的超时时刻。例如,消息发送端生成消息指令的时刻为05:01:00,设置该消息指令能被执行的超时绝对时间是05:01:30,则消息指令中时间戳记录的时刻为05:01:00,超时时间信息中记录的超时时刻为05:01:30。终端在接收到消息指令后,将终端接收到消息指令的时刻与超时时刻进行对比,若终端接收到消息指令的时刻早于超时时刻,则消息指令未超时;若终端接收到消息指令的时刻晚于超时时刻,则消息已超时。例如,终端接收到消息指令的时刻为05:01:20,早于超时时刻05:01:30,则消息指令未超时;终端接收到消息指令的时刻为05:01:35,晚于超时时刻05:01:30,则消息指令已超时。

在一个实施例中,终端根据消息指令中时间戳和超时时间间隔来检测消息指令是否超时,超时时间间隔是指消息指令从发送起允许被执行的时间范围。例如,消息发送端生成消息指令的时刻为05:01:00,设置该消息指令能被执行的超时绝对时间是05:01:30,则消息指令中时间戳记录的时刻为05:01:00,超时时间信息中记录的超时时间为30秒。终端在接收到消息指令后,计算终端接收到消息指令的时刻与时间戳记录的时刻之间的时间间隔,若时间间隔小于超时时间,则消息指令未超时;若时间间隔大于超时时间,则消息已超时。例如,终端接收到消息指令的时刻为05:01:20,与时间戳记录的时刻为05:01:00之间的时间间隔为20秒,小于超时时间30秒,则消息指令未超时;终端接收到消息指令的时刻为05:01:35,与时间戳记录的时刻05:01:00之间的时间间隔为35秒,大于超时时间30秒,则消息指令已超时。

S206,若消息指令已超时,根据消息指令中消息执行端信息检测当前终端是否为消息执行端。

具体地,消息执行端信息可包括消息指令执行终端的IP(Internet Protocol,网络之间互连的协议)地址、MAC(Medium Access Control,媒体访问控制)地址、设备编码或其他能唯一标识设备身份的信息。

S208,若消息指令已超时且当前终端是消息执行端,则放弃执行消息指令,并根据消息发送端信息将超时提示信息发送给消息发送端。

S210,若消息指令已超时且当前终端不是消息执行端,则中断传输消息指令,并根据消息发送端信息将超时提示信息发送给消息发送端。

具体地,中断传输消息指令是指终端不再传输该消息指令。

本实施例中,若消息指令已超时,终端根据消息发送端信息将超时提示信息发送给消息发送端,以使消息发送端根据反馈的超时提示信息调整所要发送的消息指令。超时提示信息是指反馈给消息发送端该消息指令已超时不再传输或该消息指令已超时不再执行的信息。

上述物联网中消息传递方法,通过在MQTT协议传输的消息指令中设置时间戳和超时时间信息,可根据时间戳和超时时间信息判断接收到的消息指令是否超时,并将超时消息指令中断传输、超时提示信息反馈给消息发送端,使得超时消息指令不会被执行或继续传递下去,节省了网络传输流量、降低了网络拥堵的风险,对消息指令增加超时时间判断,提高了通过MQTT协议传输的消息指令执行情况的确定性。

图3为另一个实施例中物联网中消息传递方法的流程图。如图3所示,在一个实施例中,消息指令中还包括消息传递路径信息,上述物联网中消息传递方法还包括:

S302,若消息指令未超时,根据消息指令中消息执行端信息检测当前终端是否为消息执行端。

S304,若消息指令未超时且当前终端是消息执行端,则执行消息指令。

S306,若消息指令未超时且当前终端不是消息执行端,则根据消息传递路径信息传递消息指令。

具体地,消息传递路径信息是指消息指令通过MQTT协议由消息发送端传递到消息执行端所经过的节点顺序和节点信息,可依据消息传递路径信息中的节点顺序和节点信息查找消息指令传递的下一个节点。其中,节点信息可包括节点的IP地址、MAC地址、设备编码或其他能唯一标识设备身份的信息。例如,消息指令由A终端发送给B终端,根据预设的消息传递路径,消息指令是由A终端传向C节点、再传向D节点,最后传递给B终端。则消息传递路径信息中包括消息指令A→C→D→B的顺序,还包括C节点和D节点的IP(Internet Protocol,网络之间互连的协议)地址。根据A终端发送的消息指令的消息传递路径信息中节点顺序和节点信息,检测到下一个传递的节点为C节点,可定向查找C节点并将消息指令发送给C节点,若消息指令未超时,检测到下一个传递的节点为D节点,再定向查找D节点并将消息指令发送给D节点,若消息指令未超时,检测到下一个传递的节点为B终端且节点信息中不包括B终端的信息,再根据消息指令中消息执行端信息定向查找B终端并将消息指令发送给B终端。

在一个实施例中,上述物联网中消息传递方法还包括:若当前终端存在已超时消息指令,将接收的消息指令覆盖已超时消息指令。

本实施例中,终端用接收到的消息指令覆盖已超时的消息指令,不再将已超时的消息指令继续传递,节省了网络流量、减少了网络拥堵的风险。

图4为另一个实施例中物联网中消息传递方法的流程图。如图4所示,在一个实施例中,上述物联网中消息传递方法还包括:

S402,向服务器发起时间同步请求。

具体地,终端向服务器发送时钟同步报文,报文是指网络中交换与传输的数据单元,即站点一次性要发送的数据块,时钟同步报文中可包括时间同步请求和终端发送时钟同步报文的时间戳。

其中,服务器是指时间同步服务器,时间同步服务器是一种可独立基于NTP(Network Time Protocol,网络时间协议)/SNTP(Simple Network Time Protocol,简单网络时间协议)协议工作的时间服务器。时间同步服务器从GPS(Global Positioning System,全球定位系统)卫星上获取标准时钟信号信息,并将信号信息在网络中传输,实现网络中终端与时间同步服务器时间同步。

S404,接收服务器返回的时间同步请求的响应结果,根据响应结果进行时间同步。

具体地,时间同步服务器在接收到时钟同步报文后作出响应,并将响应报文、接收时钟同步报文的时间戳和发送响应报文的时间戳返回终端;终端接收到响应报文后记录接收响应报文的时间戳。终端可根据时钟同步报文、响应报文、发送时钟同步报文的时间戳、发送响应报文的时间戳、接收时钟同步报文的时间戳和接收响应报文的时间戳计算传输时延和同步误差,实现终端时间与时间同步服务器时间的精准同步。例如,终端时间为10:00:00,时间同步服务器从GPS卫星上获取的标准时钟信号信息为11:00:00。终端向时间同步服务器发送时钟同步报文和发送时钟同步报文的时间戳T1,该时间戳T1为10:00:00;时间同步服务器接收到时钟同步报文的时间戳T2为11:00:01,时间同步服务器发送响应报文的时间戳T3为11:00:02,终端接收到响应报文的时间戳T4为10:00:03,则终端可计算报文的往返时延为(T4-T1)-(T3-T2)=2秒,终端相对于时间同步服务器的时间差为((T2-T1)+(T3-T4))/2=1小时,终端再跟据计算的时间差进行时间同步。

其中,终端包括消息发送端、中间节点和消息执行端,消息发送端可与时间同步服务器进行时间同步、中间节点可与时间同步服务器进行时间同步、消息执行端可与时间同步服务器进行时间同步,从而实现消息发送端、中间节点和消息执行端的时间精准同步。

本实施中,时间同步服务器与终端组成封闭式系统,系统中各终端通过向时间同步服务器发起时钟同步报文实现终端与时间同步服务器的时间同步,从而实现整个系统处于同一时间维度,避免因各终端时间不同步造成消息指令产生和执行在时间维度上的混乱。

在一个实施例中,上述物联网中消息传递方法还包括:根据预设的时间间隔定期向服务器发起时间同步请求。

具体地,预设的时间间隔包括多个时间间隔的数值,例如预设的时间间隔可为1天、3天、7天、15天和30天。在物联网系统中,可根据系统环境选择不同的时间间隔的数值。例如,消息指令的超时时间为30秒,可每隔1天向服务器发起时间同步请求;消息指令的超时时间为2分钟,可每隔15天向服务器发起时间同步请求。

本实施例中,终端定期向时间同步服务器发送时间同步报文实现时间同步,避免了终端由于计时不准导致的各终端之间时间误差过大,从而造成消息指令不能准确执行的情况。

图5为一个实施例中物联网中消息传递装置的结构框图。如图5所示,一种物联网中消息传递装置,运行于图1的第二终端上,为实现图2的物联网中消息传递方法所架构的虚拟装置,包括:

接收模块502,用于接收通过MQTT协议传输的消息指令,消息指令中包括消息发送端信息、消息执行端信息、时间戳和超时时间信息;

第一检测模块504,用于根据消息指令中时间戳和超时时间信息检测消息指令是否超时;

第二检测模块506,用于若消息指令已超时,根据消息指令中消息执行端信息检测当前终端是否为消息执行端;

执行模块508,用于若消息指令已超时且当前终端是消息执行端,则放弃执行消息指令,并根据消息发送端信息将超时提示信息发送给消息发送端;若消息指令已超时且当前终端不是消息执行端,则中断传输消息指令,并根据消息发送端信息将超时提示信息发送给消息发送端。

上述物联网中消息传递装置,通过在MQTT协议传输的消息指令中设置时间戳和超时时间信息,可根据时间戳和超时时间信息判断接收到的消息指令是否超时,并将超时消息指令中断传输、超时提示信息反馈给消息发送端,使得超时消息指令不会被执行或继续传递下去,节省了网络传输流量、降低了网络拥堵的风险,对消息指令增加超时时间判断,提高了通过MQTT协议传输的消息指令执行情况的确定性。

在一个实施例中,消息指令中还包括消息传递路径信息,第二检测模块506还用于若消息指令未超时,根据消息指令中消息执行端信息检测当前终端是否为消息执行端;

执行模块508还用于若消息指令未超时且当前终端是消息执行端,则执行消息指令;若消息指令未超时且当前终端不是消息执行端,则根据消息传递路径信息传递消息指令。

图6为另一个实施例中物联网中消息传递装置的结构框图。如图6所示,在一个实施例中,上述物联网中消息传递装置,包括接收模块602、第一检测模块604、第二检测模块606、执行模块608和覆盖模块610,其中,接收模块602、第一检测模块604、第二检测模块606、执行模块608与图5中对应的模块功能相同。

覆盖模块610用于若当前终端存在已超时消息指令,将接收的消息指令覆盖已超时消息指令。

本实施例中,终端用接收到的消息指令覆盖已超时的消息指令,不再将已超时的消息指令继续传递,节省了网络流量、减少了网络拥堵的风险。

图7为另一个实施例中物联网中消息传递装置的结构框图。如图7所示,在一个实施例中,一种物联网中消息传递装置,包括接收模块702、第一检测模块704、第二检测模块706、执行模块708和请求模块710,其中,接收模块702、第一检测模块704、第二检测模块706、执行模块708与图5中对应的模块功能相同。

请求模块710用于向服务器发起时间同步请求;

接收模块702还用于接收服务器返回的时间同步请求的响应结果,根据响应结果进行时间同步。

本实施中,时间同步服务器与终端组成封闭式系统,系统中各终端通过向时间同步服务器发起时钟同步报文实现终端与时间同步服务器的时间同步,从而实现整个系统处于同一时间维度,避免因各终端时间不同步造成消息指令产生和执行在时间维度上的混乱。

在一个实施例中,请求模块710还用于根据预设的时间间隔定期向服务器发起时间同步请求。

本实施例中,终端定期向时间同步服务器发送时间同步报文实现时间同步,避免了终端由于计时不准导致的各终端之间时间误差过大,从而造成消息指令不能准确执行的情况。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

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