具体实施方式
以下描述和附图充分地示出本发明的具体实施方案,以使本领域的技术人员能够实践它们。其他实施方案可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选的,并且操作的顺序可以变化。一些实施方案的部分和特征可以被包括在或替换其他实施方案的部分和特征。本发明的实施方案的范围包括权利要求书的整个范围,以及权利要求书的所有可获得的等同物。在本文中,本发明的这些实施方案可以被单独地或总地用术语“发明”来表示,这仅仅是为了方便,并且如果事实上公开了超过一个的发明,不是要自动地限制该应用的范围为任何单个发明或发明构思。
本文所使用的“设备”定义为,一切具有无线通信功能的装置,例如台式计算机、移动计算机、膝上型计算机、笔记本计算机、平板计算机、服务器计算机、手持计算机、手持装置、掌上电脑(PDA,PersonalDigitalAssistant)、家庭网关、路由器、手持PDA装置、板载装置、板外装置、混合装置(例如将蜂窝电话功能性与PDA装置功能性组合)、消费装置、车载装置、非车载装置、移动或便携式装置、非移动或非便携式装置、蜂窝电话、个人通信服务(PCS,PersonalCommunicationsService)装置、结合无线通信装置的PDA装置、移动或便携式全球定位系统(GPS,GlobalPositioningSystem)装置、数字电视广播(DVB,DigitalVideoBroadcasting)装置、较小计算装置、非台式计算机、“尺寸更小性能更高”装置、超移动装置、超移动个人电脑、移动因特网装置、“Origami”装置或计算装置、支持可动态组成计(DCC,DynamicallyComposableComputing)的装置,所述设备也包括机器和仪器。
图1是实施例的一种基于订阅机制的通信方法的流程示意图,所述方法可以应用于主题服务器;所述方法包括:
步骤S101,接收第一用户设备发送的主题数据包,所述主题数据包中包括主题消息;
步骤S102,将所述主题消息逐一推送至至少一个第二用户设备;所述至少一个第二用户设备为已订阅所述主题的用户设备;
文中的“第一用户设备”是指向主题服务器发布主题消息的设备;“第二用户设备”是指向主题服务器订阅了与“第一用户设备”发布的主题消息相对应主题的设备;
“主题服务器”是由主题数据库、订阅数据库、订阅管理器和发布管理器组成;主题可以是由“/”分隔的字符串,所有的主题形成主题树;主题数据库维护主题树及主题消息,当某个主题有了新消息(主题消息),订阅管理器将消息推送给订阅了该主题的设备;
所述主题服务器以单播的形式,逐一向所述至少一个第二用户设备推送所述主题消息。
如图2所示,所述一种基于订阅机制的通信方法,可以包括如下步骤:
步骤S201,接收至少一个第二用户设备发送的订阅主题的订阅请求;
第二用户设备向本设备(如主题服务器)订阅主题;所述主题可以是控制命令主题或状态主题;控制命令主题用于将控制命令转发给订阅了该主题的设备,状态主题用于向订阅了该主题的设备发送设备状态的消息;
步骤S202,将所述至少一个第二用户设备的标识添加到订阅数据库;
本发明优选的,添加该第二用户设备标识的同时,还需要添加该第二用户设备订阅的主题的标识。订阅数据库的形式可以是一个主题订阅列表或者图表等形式;需要注意的是,一个主题可以被多个设备订阅;一个设备可以订阅多个主题;
作为本发明的另一个优选方案,所述订阅数据库还可以包含于所述主题数据库。
作为本发明的另一个优选方案,所述订阅数据库可以一一对应于主题,即,每个主题对应一个订阅数据库。如此一来,则第二用户设备的标识会根据订阅的主题的标识添加到相应主题下的订阅数据库。
作为本发明的另一个优选方案,订阅请求的具体表现形式是一个由主题指向对应于该订阅请求的第二用户设备的路径,如:”uHome/UUID”,其中,uHome是订阅的主题的标识,UUID是第二用户设备的全球唯一标识符。
步骤S203,接收第一用户设备发送的主题数据包;
接收第一用户设备发送的主题数据包,所述主题数据包包括主题消息(如控制命令主题消息或状态主题消息);
可选的,所述主题数据包包括主题的标识和/或至少一个第二用户设备的标识;
步骤S204,将主题消息添加到主题数据库;
若所述主题数据包包括主题的标识,则根据所述主题的标识将所述主题消息添加到主题数据库相应的主题中,所述主题数据库包括至少一个主题;
步骤S205,将主题消息逐一推送至至少一个第二用户设备;
当特定主题有消息时,将主题消息推送给订阅了该主题的第二用户设备;若有多个第二用户设备订阅了该主题,则逐一向该多个第二用户设备发送该主题消息;向所述第二用户设备推送主题消息的过程是以单播的形式执行的;
若在所述主题数据包包括至少一个第二用户设备的标识,则推送所述主题消息的过程具体为:
根据所述至少一个第二用户设备的标识,将所述主题消息逐一推送至所述至少一个第二用户设备;
举例对此处进行说明,例如:共10个用户设备订阅了控制命令主题,但第一用户设备(手机)只需要对其中3个用户设备发送控制指令,则手机向主题服务器发送的主题数据包中包括:3个用户设备的标识和控制命令的主题消息(包括控制命令),主题服务器根据主题数据包中携带的3个用户设备的标识,逐一向这3个用户设备推送控制命令主题消息,以使这3个用户设备执行控制命令;
步骤S206,将主题消息从主题数据库中删除;
当将收到的主题消息成功发送后,则将该主题消息从主题数控库中删除,以免因存储主题消息占用硬件资源;
上述过程中,接收第二用户设备的订阅请求的步骤S201-S202和接收第一用户设备发送的主题数据包的步骤S203-S204之间没有必然的顺序关系;假设热水器先向主题服务器发送了订阅温度控制的主题,只有当主题服务器收到手机发布的温度控制主题消息后,才将该主题消息转发至热水器;反之,若手机先向主题服务器发布温度控制主题消息,则当主题服务器收到热水器发来的订阅温度控制主题时,才将该主题消息转发给热水器。
可选的,若主题为控制命令主题,则主题数据包可以由主题标识、控制命令和第二设备的标识组成,控制命令主题的形式可以是:”uHome/command/UUID”,其中UUID是订阅了控制命令主题的第二用户设备的全球唯一标识符,uHome是主题标识,command是控制命令;主题消息的内容是具体的控制命令,如JSON(JavaScriptObjectNotation)格式的数据:{“command”:“open”,“mode”:3}。
下面以一个具体的实施例进行说明,图3是实施例的流程示意图,在某场景下,如不在家的用户通过智能手机(第一用户设备)向云服务器(主题服务器)发送用于控制热水器(第二用户设备)的加热命令,以使云服务器将该命令传送给家中的热水器;
需要说明的是,在本实施例中,订阅数据库体现为订阅列表的形式。
参考图3,具体的实施过程如下:
步骤S301,用户通过手机向云服务器发送控制命令主题数据包;
所述控制命令主题数据包由主题标识、控制命令及热水器的标识组成,此控制命令主题的形式是:”uHome/command/UUID”,其中UUID是热水器的全球唯一标识符;控制命令主题消息的内容是具体的控制命令,如JSON格式的数据:{“command”:“open”,“mode”:3},即“开始加热,模式三”;
云服务器收到该主题消息后,将控制命令添加到主题数据库中,在该主题数据库中维护着各种主题,以及各主题的主题消息;
步骤S302,手机向云服务器订阅状态主题;
为了获知热水器的实时状态,以达到更好的控制,手机可以向云服务器发送请求订阅热水器状态的主题;
云服务器收到该订阅请求后,将手机和订阅的主题添加到订阅列表中,订阅列表中包括各设备的标识(ID),以及各设备订阅的主题的标识;
优选的,订阅请求具体包括手机的ID及状态主题标识。
步骤S303,热水器向云服务器订阅控制命令主题;
云服务器收到热水器的订阅请求后,首先将热水器和热水器订阅的控制命令主题添加到订阅列表中;该订阅请求具体形式为”uHome/UUID”;
此外由于云服务器在步骤S301中已经收到手机发布的控制命令主题数据包uHome/command/UUID”,则云服务器会顺次比对uHome和UUID,若均相同,则触发步骤S304;
步骤S304,云服务器向热水器推送控制命令主题消息;
云服务器根据UUID,向热水器推送控制指令{“command”:“open”,“mode”:3};
步骤S305,云服务器确认热水器收到主题消息后,发布管理器将已发布的控制命令主题消息从主题数据库中删除;因为控制命令一般都是一对一的,因此在被控设备收到该主题消息后,即可将该主题消息从数据库中删除;
其中,确认的方式可以是云服务器收到热水器收到该主题消息的反馈信息;
步骤S306,热水器收到云服务器发来的控制命令主题消息后,根据该消息,执行控制命令,即开始加热;
步骤S307,热水器向云服务器发送状态主题消息;
由于云服务器在步骤S302中已经获知手机订阅了该状态主题,并且状态主题具有实时性的特点,即不宜在主题数据库中长时间保存再推送,因此是否将云服务器将状态主题和状态主题消息添加到主题数据库中是可选的;
步骤S308,云服务器向手机推送该状态主题消息;
可选的,如果云服务器需要将该主题和主题消息保存于主题数据库中,那么该状态主题消息可以保留,以便查看智能家电的历史状态信息;或者,若主题数据库保存该主题消息的目的是为了在某设定时间内向订阅了该主题的设备推送热水器的状态,则删除主题数据库中状态主题消息的时间点就不是如步骤S305一样在确认手机收到主题消息后删除,而是在收到该状态主题消息后的一段特定时间(如20分钟)后,删除该状态主题消息。
图4是一种基于订阅机制的主题服务器400的结构图,所述主题服务器400包括:
第一接收器401,用于接收第一用户设备发送的主题数据包,所述主题数据包中包括主题消息;
推送器402,用于将所述主题消息逐一推送至至少一个第二用户设备;所述至少一个第二用户设备为已订阅所述主题的用户设备;
其中,所述推送器以单播的形式,逐一向所述至少一个第二用户设备推送所述主题消息。
图5是一种基于订阅机制的主题服务器500的结构图。
在一些说明性的实施例中,所述主题服务器500包括:
第一接收器501,用于接收第一用户设备发送的主题数据包,所述主题数据包中包括主题消息;
推送器502,用于将所述主题消息逐一推送至至少一个第二用户设备;所述至少一个第二用户设备为已订阅所述主题的用户设备。
在一些说明性的实施例中,所述主题数据包包括主题的标识,还包括:
发布管理器503,用于所述第一接收器501接收所述主题数据包之后,根据所述主题的标识将所述主题消息添加到主题数据库相应的主题中,所述主题数据库包括至少一个主题。
在一些说明性的实施例中,所述主题数据包包括所述至少一个第二用户设备的标识;
所述推送器502将所述主题消息逐一推送至至少一个第二用户设备具体为:所述推送器502根据所述至少一个第二用户设备的标识,将所述主题消息逐一推送至所述至少一个第二用户设备。
在一些说明性的实施例中,所述主题服务器500,还包括:
第二接收器504,用于在所述推送器502将主题消息逐一推送至至少一个第二用户设备之前,接收所述至少一个第二用户设备发送的订阅所述主题的订阅请求;
订阅管理器505,用于将所述至少一个第二用户设备的标识添加到订阅数据库;
本发明优选的,添加该第二用户设备标识的同时,还需要添加该第二用户设备订阅的主题的标识。
所述订阅数据库用于存储设备的标识和设备订阅的主题。
订阅数据库的形式可以是一个主题订阅列表或者图表等形式;需要注意的是,一个主题可以被多个设备订阅;一个设备可以订阅多个主题;
作为本发明的另一个优选方案,所述订阅数据库还可以包含于所述主题数据库。
作为本发明的另一个优选方案,所述订阅数据库可以一一对应于主题,即,每个主题对应一个订阅数据库。如此一来,则第二用户设备的标识会根据订阅的主题的标识添加到相应主题下的订阅数据库。
作为本发明的另一个优选方案,订阅请求的具体表现形式是一个由主题指向对应于该订阅请求的第二用户设备的路径,如:”uHome/UUID”,其中,uHome是订阅的主题的标识,UUID是第二用户设备的全球唯一标识符。在一些说明性的实施例中,所述主题服务器500,还包括:
主题消息删除器506,用于所述推送器502将所述主题消息逐一推送至所述至少一个第二用户设备之后,将所述主题消息从主题数据库中删除。
采用上述实施例,可达到以下效果:
简化设备之间的控制操作,避免了因控制过程产生的问题,如局域网中的广播风暴,或,云服务器负载过大的问题;
此方法应用范围广,既适用于局域网中的设备控制过程,还适用于通过云服务器发送控制命令的过程。
本领域技术人员还应当理解,结合本文的实施例描述的各种说明性的逻辑框、模块、电路和算法步骤均可以实现成电子硬件、计算机软件或其组合。为了清楚地说明硬件和软件之间的可交换性,上面对各种说明性的部件、框、模块、电路和步骤均围绕其功能进行了一般地描述。至于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个系统所施加的设计约束条件。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为背离本公开的保护范围。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。