具体实施方式
以下描述和附图充分地示出本发明的具体实施方案,以使本领域的技术人员能够实践它们。其他实施方案可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选的,并且操作的顺序可以变化。一些实施方案的部分和特征可以被包括在或替换其他实施方案的部分和特征。本发明的实施方案的范围包括权利要求书的整个范围,以及权利要求书的所有可获得的等同物。在本文中,本发明的这些实施方案可以被单独地或总地用术语“发明”来表示,这仅仅是为了方便,并且如果事实上公开了超过一个的发明,不是要自动地限制该应用的范围为任何单个发明或发明构思。
图1示出了本发明实施例的一种订阅通知的方法的流程示意图,
如图1所示,在一些说明性的实施例中,所述一种订阅通知的方法,可以应用于网关等在网络中是中心设备,并同时具有多种底层通信技术能力的设备;所述方法包括以下几个步骤:
步骤S101,订阅所有设备发送的通知;
在这个过程中,网关可以通过现有技术的流程进行订阅;如:通过在总线上设置订阅规则(接收网络内所有设备发送的通知),当接收到网络内任何设备通过广播发送的通知后,总线自动判断符合订阅规则,然后成功接收该通知;这里需要注意的是,该步骤与以下步骤没有必然的顺序关系,即网关即可以在为第一设备订阅通知前执行该步骤,也可以在为第一设备执行与订阅通知相关的步骤后执行该步骤;
步骤S102,接收第一设备发送的用于订阅通知的订阅消息,所述订阅消息携带所述第一设备的标识和待订阅的通知的特征;
其中,所述第一设备是通知订阅者,订阅符合上述通知的特征的一类通知,发布该类通知的设备为发布者;
如在一种常见的通知订阅机制中,可以将网络中的设备分为两种角色:通知发布者(producer)和通知消费者(consumer),在事件触发下,通知发布者会发布一条人类能够阅读的通知(例如:一段文字信息、视频、音频等),订阅了该通知的通知消费者获得相应的通知,并将通知属性给用户;在这个过程中,通知发布者即为上述发布者,通知消费者即所述订阅者;
上述订阅消息携带的所述待订阅的通知的特征,可以理解为一种订阅规则,即第一设备告知其需要订阅哪种通知;
通知的特征可以包括采用以下某个特征或它们的组合:
1、订阅目标设备或应用,如设备应用采用org.haier.aircondition001这样的名字,则订阅org.haier.aircondition001或org.haier.*都能够订阅到该设备发出的通知;
2、订阅通知类型,如“information”、“warning”、“emergency”;
3、订阅通知中的关键字,由于在一般情况下,应用名称、通知类型也会包含在通知中,上面两种订阅规则本质上也是订阅了通知中的关键字;
4、通知属性,如该通知中的通知主体属于哪种播放类型(如音频、视频、文字),或者通知主体的格式(如MP3、WMA、AVI、MOV、WMV、3GP、TXT、PDF、DOC等);
步骤S103,判断所述订阅消息是否合法;
在一些说明性的实施例中,所述待订阅的通知的特征包括通知属性;步骤S103,包括:
根据所述第一设备的标识,在设备信息库中查询所述第一设备的设备能力;所述设备信息库存储所述第一设备的注册信息,所述注册信息包括所述设备能力和所述第一设备的标识;
根据所述第一设备的设备能力和所述待订阅的通知的特征,判断所述第一设备是否有能力订阅所述待订阅的通知;
其中,接收多个网络设备发送的注册信息之后,并将各网络设备的注册信息存储于所述设备信息库中;网络设备包括所述第一设备和作为发布者的其它设备,所述网络设备的注册信息包括设备基本信息(如设备名、设备的标识、应用的标识、提供的服务接口信息),还包括该设备的能力,如设备的显示能力(如可以显示哪些格式的文字和视频)、声音播放能力(可以播放哪些格式的音频);
判断所述订阅消息是否合法的过程:通过设备信息库,查看第一设备的能力,判断其是否有能力订阅所述待订阅的通知;例如:一台收音机向网关发送订阅消息,要求订阅电视发送的视频通知;网关通过查询设备信息库;如发现收音机不具备播放视频的能力,则拒绝为其进行订阅;
步骤S104,若合法,则将所述第一设备的标识和所述待订阅的通知的特征,对应添加到订阅规则库中,并向所述第一设备反馈订阅成功消息;若收到与所述订阅规则库中存储的所述待订阅的通知的特征相同的第一通知,则从该订阅规则库中调取对应于所述待订阅的通知的特征的所述第一设备的标识,并根据该标识将所述第一通知中携带的通知信息发送至所述第一设备;若不合法,则向所述第一设备反馈订阅失败消息;
在所述订阅规则库中存储了在网关上成功订阅通知的各网络设备(如第一设备)的设备标识和订阅的通知的特征;当网关收到符合该特征的通知后,可以根据订阅规则库查找到所述第一设备,将通知推送至所述第一设备的过程;
在一些说明性的实施例中,在将所述第一通知发送至所述第一设备之前,还包括:
检测是否与所述第一设备建立连接;
若是,则执行所述将所述第一通知发送至所述第一设备的操作;
若否,则继续检测;
在一些说明性的实施例中,在检测出未与所述第一设备建立连接之后,还包括:将所述第一通知存储于通知缓冲区;可选的,若所述通知缓冲区已存储了待发送至所述第一设备的第二通知,且所述第二通知的特征与所述第一通知的特征相同,则将该第二通知替换为所述第一通知;即,对于接收到的通知的特征相同的一类通知,仅存储最新的通知,并将最新的通知发送给第一设备;
进一步的,在将所述通知转发至所述第一设备之后,还包括:删除所述通知缓冲区存储的所述第一通知,以减少网关的运行负载,避免占用大量空间;
在一些说明性的实施例中,将所述第一通知中携带的通知信息发送至所述第一设备,包括:
按照设备注册时获取的所述第一设备支持的通信协议,将解析所述第一通知得到的所述通知信息进行二次封装;
将该二次封装后的通知信息发送至所述第一设备;
由于第一设备所支持的通信协议可能无法识别所述通知,因此网关需要对第一通知中的通知信息进行二次封装,转换成所述第一设备可以识别的通知,然后再将二次封装后的通知信息发送至所述第一设备;该过程能够弥补不同网络之间的鸿沟,实现覆盖全网的事件通知机制。
下面以一个具体的实施例来说明本方案,在该实施例中涉及网关、支持蓝牙BT的设备1、支持无线WiFi的设备2和设备3;其中,所述设备1、设备2和设备3都存在于一个家庭网络中,可以统一称为网络设备;网关是这个家庭网络的中心节点,支持多种底层通信技术,可以与设备1、设备2和设备3建立连接;
图2是本发明实施例的网关如何订阅通知的过程;如图2所示,具体过程如下:
步骤S201,网关订阅网络内所有通知;
网关应用程序在总线上设置订阅规则;所设置的订阅规则使得网络中任意一个设备发出的任意内容的通知都能匹配该规则,从而被网关所接收;
步骤S202,网络设备与网关建立会话,进行注册;
网络中各设备(如设备1、设备2和设备3)连接网关后,与网关建立会话并注册;注册信息包含设备的基本信息,如设备名、设备的标识ID、应用的ID、设备服务和接口描述等;此外,注册信息还包含设备的能力,主要是设备的显示能力(如是否有显示屏)、声音播放能力等;网关将接收到的各设备的注册信息加入设备信息库;
步骤S203,设备2向网关发送消息,指明所要订阅的通知;
注册成功后,设备2向网关发送订阅消息,指明所要订阅的通知的特征(订阅规则);
步骤S204,网关根据注册信息判断订阅的合法性;
网关收到设备2的订阅消息后,根据设备能力判断该订阅的合法性;网关首先根据设备的ID查询设备信息库,得到设备的能力;根据设备的能力与所要订阅的通知的特征,查询订阅策略库,判断该设备的订阅规则是否符合策略;即可以理解为判断该设备是否有能力订阅该通知;所述订阅策略库可以是网关出厂时预置的数据库,用于存储对应于各种订阅规则(通知的特征)的设备能力,如:语音通知——音频播放器等;若判断结果为不符合策略,则触发步骤S205;反正,则触发步骤S206;
步骤S205,网关拒绝建立订阅;
网关向设备2反馈订阅失败的消息;
步骤S206,网关保存设备1的订阅规则信息,加入到订阅规则库;
网关将符合策略的订阅规则(设备2的ID和所要订阅的通知的特征)加入到订阅规则库中。图3示出了本发明实施例中网关集中管理订阅通知的具体流程示意图;在该图中,具体描述了网关如何将接收到的通知推送给订阅通知的设备2的过程;如图3所示,包括以下几个步骤:
步骤S301,设备1通过广播发送通知;
网络中的Device1(设备1)发出了一条通知消息;该消息被网关接收;
步骤S302,网关接收通知,提取通知的特征;
网关提取Device1发送的通知的特征,触发步骤S303;
步骤S303,网关查询订阅规则库;
查询订阅规则库,得到订阅了该通知的Device2(设备2)和Device3(设备3);
步骤S304,判断订阅了该通知的设备是否在线;
网关根据建立的会话情况判断Device2和Device3是否在线;假设Device2不在线,Device3在线;
同时,网关更新Device2对应的通知缓冲区;通知缓冲区位于网关上,存储了消费者(即Device2和Device3)所订阅的通知发布者的最新一条通知;一个典型的通知缓冲区包含消费者、发布者与通知三项内容;网关在通知缓冲区查找到消费者为Device2、发布者为Device1所对应的项,更新相应的通知内容为上述Device1最新发布的通知;
步骤S305,向设备3发送通知;
网关根据Device3的底层通信协议(支持WiFi),将通知封装在消息中,发送给Device3;
步骤S306,设备3收到该通知后,显示通知;
Device3收到通知后,显示或者播放该通知的内容;
步骤S307,设备2上线;
一段时间后,Device2上线,与网关建立会话连接;
步骤S308,网关向设备2发送通知;
网关将Device2作为消费者所对应的通知缓冲区内的全部通知(包括上述Device1发布的通知)封装成Device2可识别的消息并发送给Device2;
步骤S309,设备2收到该通知后,显示通知;
Device2收到通知后,显示或者播放该通知的内容;
步骤S310,网关清除设备2对应的通知缓冲区;
网关清除Device2对应的通知缓冲区上存储的信息。
图4示出了本发明实施例的一种订阅通知装置400的功能模块框图,
在一些说明性的实施例中,所述装置400,包括:
订阅单元401,用于订阅所有设备发送的通知;
第一接收单元402,用于接收第一设备发送的用于订阅通知的订阅消息,所述订阅消息携带所述第一设备的标识和待订阅的通知的特征;
判断单元403,用于判断所述订阅消息是否合法;
添加单元404,用于若判断单元403判断的结果为合法之后,将所述第一设备的标识和所述待订阅的通知的特征,对应添加到订阅规则库中,并向所述第一设备反馈订阅成功消息;
转发单元405,用于所述添加单元404向所述第一设备反馈订阅成功消息之后,若收到与所述订阅规则库中存储的所述待订阅的通知的特征相同的第一通知,则从该订阅规则库中调取对应于所述待订阅的通知的特征的所述第一设备的标识,并根据该标识将所述第一通知发送至所述第一设备;
反馈单元406,用于若判断单元403判断的结果为不合法之后,向所述第一设备反馈订阅失败消息;
在一些说明性的实施例中,所述待订阅的通知的特征包括通知属性;所述判断单元403,包括:
第一判断子单元4031,用于根据所述第一设备的标识,在设备信息库中查询所述第一设备的设备能力;所述设备信息库存储所述第一设备的注册信息,所述注册信息包括所述设备能力和所述第一设备的标识;
第二判断子单元4032,用于根据所述第一设备的设备能力和所述待订阅的通知的通知属性,判断所述第一设备是否有能力订阅所述待订阅的通知;
在一些说明性的实施例中,所述装置400,还包括:
检测单元407,用于所述转发单元405将所述第一通知发送至所述第一设备之前,检测是否与所述第一设备建立连接;
若是,则所述转发单元405将所述第一通知发送至所述第一设备;
若否,则所述检测单元407继续检测;
在一些说明性的实施例中,所述装置400,还包括:
存储单元408,用于所述检测单元407检测出未与所述第一设备建立连接之后,将所述第一通知存储于通知缓冲区;
删除单元409,用于所述转发单元405将所述通知发送至所述第一设备之后,删除所述通知缓冲区存储的所述第一通知;
在一些说明性的实施例中,所述转发单元405,包括:
第一转发子单元4051,用于按照设备注册时获取的所述第一设备支持的通信协议,将解析所述第一通知得到的通知信息进行二次封装;
第二转发子单元4052,用于该二次封装后的通知信息发送至所述第一设备;
在一些说明性的实施例中,若所述通知缓冲区已存储了待发送至所述第一设备的第二通知,且所述第二通知的特征与所述第一通知的特征相同,则所述存储单元408,包括:
存储子单元4081,用于将所述第二通知替换为所述第一通知。
采用上述实施例,可达到以下效果:
提出的集中式订阅通知方法能够弥补不同网络之间的鸿沟,实现覆盖全网的事件通知机制;
并且,运用该方法能够管理订阅规则,避免不符合订阅能力的设备实施订阅,降低了通知消息通过低能力设备泄漏出去的风险,提高了系统的安全性;
此外,该方法还能够判断设备在线状态,为暂时不在线的设备缓存并管理通知消息,使得最新通知能够被合理地呈现给通知的订阅者。
本领域技术人员还应当理解,结合本文的实施例描述的各种说明性的逻辑框、模块、电路和算法步骤均可以实现成电子硬件、计算机软件或其组合。为了清楚地说明硬件和软件之间的可交换性,上面对各种说明性的部件、框、模块、电路和步骤均围绕其功能进行了一般地描述。至于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个系统所施加的设计约束条件。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为背离本公开的保护范围。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。