具体实施方式
下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本领域技术人员清楚的理解本发明,首先介绍本发明涉及的一些专业知识。
本发明中的3C协同设备是指在局域网内使用SSDP查找与发现设备和服务、使用SOAP调用服务的设备,当然,本发明中的3C协同设备具有智能互联、资源共享、协同服务等功能。本发明将3C协同设备原本具有的这些功能称为3C协同设备原有的功能。
本发明中的3C协同设备可以产生3C协同信息。3C协同信息是指3C协同设备为实现3C协同设备原有的功能而产生的信息。在现有技术中,3C协同设备将3C协同信息封装在基于例如超文本传输协议(HTTP,HypertextTransfer Protocol)等协议的消息中,3C协同设备之间交互的是携带有3C协同信息的基于例如超文本传输协议(HTTP,Hypertext Transfer Protocol)等协议的消息。3C协同信息例如是宣告自己上线的上线信息、设备/服务描述文件、查找设备/服务的请求信息、请求指定的设备提供设备/服务描述文件的信息等信息。
在本发明中,将3C协同设备提供的服务称为3C协同服务。
在本发明中,3C协同设备例如是智能组和资源共享(IGRS,Intelligent Grouping and Resource Sharing)设备或者是通用即插即用(UPnP,UniversalPlug and Play)设备。对应的,3C协同信息例如是IGRS信息或者是UPnP信息。
IGRS是为实现信息设备之间的智能互联、资源共享、协同服务而制定的一系列的通信协议,其中,最为核心的IGRS基础协议规定了IGRS设备之间相互发现及资源共享等机制,具体包括设备相互发现、设备间管道创建、服务发现、设备组管理、会话管理和服务访问等机制。
在现有技术中,IGRS设备在正常工作期间,将以一定的时间间隔向所连接的各个网络中按指定的组播地址发送设备/服务在线宣告信息。设备/服务在线宣告信息中可以包括设备/服务类型、设备/服务名称、根设备描述文档统一资源定位符(URL,Uniform Resource Locator)等设备信息。
在现有技术中,IGRS设备可通过在指定的组播地址上侦听设备/服务在线宣告信息,以发现网络上存在的IGRS设备/服务。IGRS设备可向所连接的各个网络中按指定的组播地址发送设备/服务查找请求,收到请求的符合查找条件的IGRS设备应向发起查找请求的IGRS设备返回设备/服务查找响应。
在现有技术中,上述宣告及查找功能的具体操作借鉴了SSDP中的相关机制。而类似的操作也将用于IGRS设备对于IGRS服务的宣告及查找。
在现有技术中,在进行上述宣告及查找操作后,IGRS设备可与目标IGRS设备建立起IGRS管道,并通过该管道获得相应目标IGRS设备/服务的描述文档。进而,IGRS设备可以通过与目标IGRS设备建立起会话,并使用SOAP,Simple ObjectAccess Protocol消息进行服务的调用。在IGRS基础协议中,描述文档获取、会话建立、服务调用均在HTTP的基础之上进行实现。
值得注意的是,在现有技术中,IGRS中的设备/服务发现协议使用的是本地组播地址。虽然本地组播地址的使用有效的控制了设备/服务宣告组播消息的传送范围,降低了网络带宽的消耗,但同时也使得IGRS设备/服务发现仅限于局域网范围内。此外,局域网中私有地址的使用也使得传统的IGRS难以在广域网范围内应用。
除IGRS技术之外,UPnP技术也是被广泛应用的协同服务技术之一。在现有技术中,UPnP的基本机制与上述描述类似,通过局域网范围内的组播实现设备/服务的宣告与查找,通过HTTP及SOAP实现设备/服务描述文件的获取以及服务的调用。因此,现有的UPnP协议同样存在难以在广域网范围内应用的问题。
在本发明中,3C协同设备除可以提供3C协同设备原有的功能外,还可以提供可扩展消息和在线协议(XMPP,Extensible Messaging and PresenceProtocol)规定的功能。
XMPP是由互联网工程任务组(IETF,The Internet Engineering Task Force)所制定的一种进行可扩展标记语言(XML,Extensible Markup Language)流传输的协议。XMPP起源于Jabber社区为即时消息及在线信息所做的工作,目前广泛应用于即时消息、在线信息、媒体格式协商及其他通用的XML传送应用中。RFC3920及RFC3921中定义了XMPP的核心协议,而XMPP标准化基金会(XSF,XMPP Standards Foundation)则定义了一系列的XMPP扩展协议(XEP,XMPP Extension Protocol)。
XMPP技术是一种分布式的、基于客户端/服务器架构的技术。XMPP客户端通过其帐号来进行标识,即通过Jabber标识(JID,Jabber Identifier)来进行标识。JID与电子邮件的地址较为类似,采用了node@domain/resource的结构,其中的node、domain以及resource字段分别标识了用户、用户连接的服务器以及用户用以连接网络的资源。
当XMPP客户端连接到其JID的domain字段所表示的XMPP服务器时,XMPP客户端与XMPP服务器将建立起一个双向的XML流。所有的XMPP客户端与XMPP服务器之间交互的信息均以XML节(XML Stanza)的形式通过XML流进行传送。XMPP协议规定了3种基本的XML节,即在线(Presence),消息(Message)及信息查询(IQ)节,分别用于在线信息、会话消息及信息查询的交互。
当一个JID为node1@domain1的XMPP客户端需要与一个JID为node2@domain2的XMPP客户端进行通信时,会将消息发送给domain1所对应的XMPP服务器。domain1所对应的XMPP服务器继而将消息转发至domain2所对应的XMPP服务器。domain2所对应的XMPP服务器将消息发送给JID为node2@domain2的XMPP客户端。
由于XMPP客户端之间通过XMPP服务器进行消息的交互,而XMPP服务器可以使用公有网IP地址,因此,即使两个XMPP客户端均在私有网络中,两个XMPP客户端之间存在着网络地址转换(NAT,Network AddressTranslation)设备或防火墙设备,两个XMPP客户端之间仍然可以通过XMPP服务器进行互联,从而穿越了NAT设备和防火墙设备进行消息的传送。
下面介绍本发明提供的一种3C协同设备。如图1所示,这种3C协同设备包括:3C协同单元101,用于提供3C协同设备原有的功能;XMPP单元102,用于提供XMPP规定的功能;3C协同单元101具体用于将3C协同信息提供给XMPP单元102,XMPP单元102具体用于将3C协同信息封装在XMPP消息中,并将封装后的XMPP消息提供给XMPP服务器;XMPP单元102具体用于从XMPP服务器获得携带3C协同信息的XMPP消息,并对获得的XMPP消息解封装,将得到的3C协同信息提供给3C协同单元101。
具体的,3C协同设备保留原有的功能,在实际应用中,可以由3C协同设备包括的3C协同单元提供原有的功能。另外,3C协同设备提供XMPP规定的功能,在实际应用中,可以由3C协同设备包括的XMPP单元提供XMPP规定的功能。
在现有技术中,3C协同设备需要将3C协同信息封装在HTTP等协议的消息中,3C协同设备的IP地址也要封装在HTTP等协议的消息中,3C协同设备之间交互的是携带有3C协同信息和3C协同设备的IP地址的HTTP等协议的消息。而在本发明中,XMPP单元102获得3C协同单元101提供的3C协同信息后,并不需要将3C协同信息封装在HTTP等协议的消息中,而是直接将3C协同信息封装在XMPP消息中。XMPP消息没有封装3C协同设备的IP地址,而是携带了3C协同设备的JID。具体的,XMPP单元102发给XMPP服务器的XMPP消息的源地址可以是发出所述XMPP消息的3C协同设备的JID,XMPP单元102从XMPP服务器获得的XMPP消息的目的地址可以是所述XMPP消息最后需要到达的3C协同设备的JID。
在本发明中,XMPP消息可以是指XML节。
在实际应用中,在3C协同设备上线后,XMPP单元102可以与XMPP服务器建立XML流。
在实际应用中,3C协同单元101提供给XMPP单元102的3C协同信息可以是3C协同单元101和XMPP单元102所在的3C协同设备宣告自己上线的上线信息,XMPP单元102可以将3C协同设备上线信息封装在Presence节中。
XMPP服务器在收到3C协同设备上线信息后,可以通知3C协同设备其有哪些联系人在线。这种情况下,XMPP单元102从XMPP服务器获得的XMPP消息中的3C协同信息可以是XMPP单元102所在的3C协同设备的联系人的在线信息,这个在线信息可以封装在Presence节中。
另外,XMPP服务器在向3C协同设备提供联系人的在线信息的同时,还可以向3C协同设备提供联系人的设备/服务描述文件或用于表示所述3C协同设备的联系人的设备/服务描述文件的信息,其中,用于表示所述3C协同设备的联系人的设备/服务描述文件的信息可以是对应所述3C协同设备的联系人的设备/服务描述文件的哈希(HASH)值,也可以是所述3C协同设备的联系人的设备/服务描述文件的标识。具体的,XMPP单元102从XMPP服务器获得的XMPP消息中的3C协同信息还可以包括XMPP单元102所在的3C协同设备的联系人的设备/服务描述文件或用于表示XMPP单元102所在的3C协同设备的联系人的设备/服务描述文件的信息,联系人的设备/服务描述文件和联系人的在线信息可以一同封装在Presence节中,或者,用于表示联系人的设备/服务描述文件的信息和联系人的在线信息可以一同封装在Presence节中。
在实际应用中,XMPP服务器可能会请求3C协同设备提供其设备/服务描述文件,3C协同设备收到这样的请求后,可以将其设备/服务描述文件提供给XMPP服务器。具体的,XMPP单元102从XMPP服务器获得的XMPP消息中的3C协同信息可以是查询XMPP单元102所在的3C协同设备的设备/服务描述文件的请求信息,这个请求信息可以封装在IQ节中。3C协同单元101提供给XMPP单元102的3C协同信息为3C协同单元101和XMPP单元102所在的3C协同设备的设备/服务描述文件,这个设备/服务描述文件可以封装在IQ节中。
当然,在实际应用中,3C协同设备也可以在没有收到XMPP服务器的请求的情况下,主动的将其设备/服务描述文件提供给XMPP服务器。
在实际应用中,3C协同设备也可以不向XMPP服务器提供3C协同设备的设备/服务描述文件,而是将用于表示3C协同设备的设备/服务描述文件的信息提供给XMPP服务器。
无论是3C协同设备的设备/服务描述文件,还是用于表示3C协同设备的设备/服务描述文件的信息,3C协同设备都可以将其封装在Presence节或IQ节中发送给XMPP服务器,在本实施例中,由XMPP单元102将其所在的3C协同设备的设备/服务描述文件或用于表示XMPP单元102所在的3C协同设备的设备/服务描述文件的信息封装在Presence节或IQ节中发送给XMPP服务器。
在实际应用中,用于表示3C协同设备的设备/服务描述文件的信息可以是对应3C协同设备的设备/服务描述文件的HASH值。具体的,3C协同设备可以对设备/服务描述文件进行HASH运算,得到一个HASH值。之后,3C协同设备将这个HASH值提供给XMPP服务器。XMPP服务器可以将得到的HASH值与之前保存的HASH值进行比较,如果XMPP服务器在保存的HASH值中查找到与得到的HASH值一致的HASH值,那么说明XMPP服务器之前已保存有这个HASH值对应的设备/服务描述文件,无需3C协同设备再次提供这个设备/服务描述文件;如果XMPP服务器在保存的HASH值中没有发现与得到的HASH值一致的HASH值,或者发现得到的HASH值与之前保存的对应同一个设备/服务描述文件的HASH值不一致,那么说明XMPP服务器之前并没有保存这个HASH值对应的设备/服务描述文件或者设备/服务描述文件已经发生变化,这种情况下,需要3C协同设备提供这个设备/服务描述文件。具体的,3C协同单元101提供给XMPP单元102的3C协同信息为3C协同单元101和XMPP单元102所在的3C协同设备的设备/服务描述文件对应的HASH值,XMPP单元102可以将这个HASH值封装在Presence节或IQ节中。
在实际应用中,用于表示3C协同设备的设备/服务描述文件的信息还可以是3C协同设备的设备/服务描述文件的标识。这个标识可以用整数型数值来表示,每当自己的设备/服务描述文件发生变化,3C协同设备都可以将标识的值以1为单位进行递增。当然,如果这个3C协同设备对应的XMPP服务器之前已经保存过这个3C协同设备的设备/服务描述文件,那么此时,这个XMPP服务器保存的对应这个3C协同设备的设备/服务描述文件的标识的值与这个3C协同设备修改后的对应这个3C协同设备的设备/服务描述文件的标识的值会不相同。这种情况下,当这个3C协同设备向这个XMPP服务器提供修改的标识的值时,XMPP服务器会因为之前保存的标识的值与收到的标识的值不一致,而向这个3C协同设备发出标识错误或请求提供设备/服务描述文件等信息,这个3C协同设备收到这样的信息后,可以将自己的设备/服务描述文件提供给这个XMPP服务器,这个XMPP服务器收到设备/服务描述文件后,可以将收到的设备/服务描述文件与之前收到的这个3C协同设备修改后的标识的值建立映射关系。
在实际应用中,3C协同设备可以向XMPP服务器请求查询指定的3C协同设备/服务的信息,XMPP服务器收到这个请求后,可以向XMPP服务器返回指定的3C协同设备/服务的信息。具体的,3C协同单元101提供给XMPP单元102的3C协同信息可以是查询指定的3C协同设备/服务的信息的请求信息,XMPP单元102可以将这个请求信息封装在IQ节中。XMPP单元102从XMPP服务器获得的XMPP消息中的3C协同信息可以是上述指定的3C协同设备/服务的信息。查询指定的3C协同设备/服务的信息的请求信息可以包括指定的3C协同设备/服务的类型、名称或标识等信息,XMPP服务器可以根据类型、名称或标识等信息查找指定的3C协同设备/服务的信息。需要说明的是,指定的3C协同设备/服务可以理解为指定的3C协同设备或者指定的3C协同设备提供的服务。
在实际应用中,XMPP服务器收到3C协同设备发出的查询指定的3C协同设备/服务的信息的请求后,除可以向3C协同设备提供指定的3C协同设备/服务的信息外,还可以向3C协同设备提供指定的3C协同设备的设备/服务描述文件或用于表示上述指定的3C协同设备的设备/服务描述文件的信息。具体的,XMPP单元102从XMPP服务器获得的XMPP消息中的3C协同信息还可以包括上述指定的3C协同设备的设备/服务描述文件或用于表示上述指定的3C协同设备的设备/服务描述文件的信息。
总之,对于设备/服务描述文件,XMPP单元102从XMPP服务器获得的XMPP消息中的3C协同信息可以是3C协同单元101和XMPP单元102所在的3C协同设备的联系人的设备/服务描述文件、用于表示3C协同单元101和XMPP单元102所在的3C协同设备的联系人的设备/服务描述文件的信息、3C协同单元101指定的3C协同设备的设备/服务描述文件或用于表示3C协同单元101指定的3C协同设备的设备/服务描述文件的信息,携带3C协同单元101和XMPP单元102所在的3C协同设备的联系人的设备/服务描述文件、用于表示3C协同单元101和XMPP单元102所在的3C协同设备的联系人的设备/服务描述文件的信息、3C协同单元101指定的3C协同设备的设备/服务描述文件或用于表示3C协同单元101指定的3C协同设备的设备/服务描述文件的信息的XMPP消息可以是Presence节,也可以是IQ节。
如果3C协同单元101确定收到的用于表示3C协同单元101和XMPP单元102所在的3C协同设备的联系人的设备/服务描述文件的信息与之前保存的用于表示3C协同单元101和XMPP单元102所在的3C协同设备的联系人的设备/服务描述文件的信息不一致,或者,如果3C协同单元101确定之前没有保存过用于表示3C协同单元101和XMPP单元102所在的3C协同设备的联系人的设备/服务描述文件的信息,则XMPP单元102可以向XMPP服务器发出提供3C协同单元101和XMPP单元102所在的3C协同设备的联系人的设备/服务描述文件的请求消息,XMPP单元102可以获得所述XMPP服务器提供的携带3C协同单元101和XMPP单元102所在的3C协同设备的联系人的设备/服务描述文件的XMPP消息。
如果3C协同单元101确定收到的用于表示3C协同单元101指定的3C协同设备的设备/服务描述文件的信息与之前保存的用于表示3C协同单元101指定的3C协同设备的设备/服务描述文件的信息不一致,或者,如果3C协同单元101确定之前没有保存过用于表示3C协同单元101指定的3C协同设备的设备/服务描述文件的信息,则XMPP单元102可以向XMPP服务器发出提供3C协同单元101指定的3C协同设备的设备/服务描述文件的请求消息,XMPP单元102可以获得所述XMPP服务器提供的携带所述指定的3C协同设备的设备/服务描述文件的XMPP消息。
在实际应用中,3C协同设备可以向XMPP服务器请求调用3C协同服务,XMPP服务器收到这个请求后,可以向3C协同设备返回调用的结果。具体的,3C协同单元101提供给XMPP单元102的3C协同信息可以是调用3C协同服务的请求信息,XMPP单元102可以将这个请求信息封装在IQ节中。XMPP单元102从XMPP服务器获得的XMPP消息中的3C协同信息可以是调用3C协同服务的结果信息。
由于3C协同设备可以应用在通信系统中,所以,本发明还提供了一种通信系统。这种通信系统包括:3C协同设备和XMPP服务器;所述3C协同设备用于提供3C协同设备原有的功能和XMPP规定的功能;3C协同设备之间通过各自对应的XMPP服务器交互消息,交互的消息为携带3C协同信息的XMPP消息。
在实际应用中,两个需要交互的3C协同设备既可以对应同一个XMPP服务器,也可以对应不同的XMPP服务器。当两个需要交互的3C协同设备对应同一个XMPP服务器时,两个3C协同设备通过同一个XMPP服务器交互消息。当两个需要交互的3C协同设备对应不同的XMPP服务器时,两个3C协同设备通过各自对应的不同的XMPP服务器交互消息。本发明提供了对应每一种情形的通信系统示意图。
如图2所示,通信系统包括第一3C协同设备201、XMPP服务器202和第二3C协同设备203,第一3C协同设备201与第二3C协同设备203对应的XMPP服务器都是XMPP服务器202,第一3C协同设备201与第二3C协同设备203之间通过XMPP服务器202交互消息。
如图3所示,通信系统包括第一3C协同设备301、第一XMPP服务器302、第二XMPP服务器303和第二3C协同设备304,第一3C协同设备301对应的XMPP服务器是第一XMPP服务器302,第二3C协同设备304对应的XMPP服务器是第二XMPP服务器303,第一3C协同设备301与第二3C协同设备304之间分别通过第一XMPP服务器302和第二XMPP服务器303交互消息。
在实际应用中,3C协同设备之间交互的消息是携带3C协同信息的XMPP消息。XMPP消息可以是XML节。XMPP消息中的源地址或目的地址可以是3C协同设备的JID。每个3C协同设备上线后,都可以与对应的XMPP服务器建立XML流。XML流的建立过程中可以使用XMPP核心协议所定义的数据加密及认证机制。
在建立起XML流后,3C协同设备可以执行上线通知功能。3C协同设备可以向对应的XMPP服务器发送携带有基于SSDP的上线信息的Presence节。对应的XMPP服务器收到携带有上线信息的Presence节后,可以检查3C协同设备的联系人列表,并可以将3C协同设备的在线信息以Presence节的形式发送给3C协同设备的联系人。同时,XMPP服务器也可以向3C协同设备发送携带有3C协同设备的联系人的在线信息的Presence节。联系人列表的维护可按照现有的XMPP规范进行。
3C协同设备向对应的XMPP服务器发送的携带有上线信息的Presence节中可以封装有3C协同设备的类型、能力等设备信息,这样,对应的XMPP服务器及其他3C协同设备可以通过这些信息确定3C协同设备的类型和能力等信息。
3C协同设备可以使用XML节向对应的XMPP服务器注册设备/服务描述文件。优选的,3C协同设备可以将设备/服务描述文件封装在发送给对应的XMPP服务器的IQ节中。对应的XMPP服务器收到IQ节后,保存3C协同设备的设备/服务描述文件。
在实际应用中,XMPP服务器可以使用XML节主动查询对应的3C协同设备的设备/服务描述文件。优选的,XMPP服务器可以使用IQ节查询对应的3C协同设备的设备/服务描述文件。对应的3C协同设备收到查询消息后,可以将自己的设备/服务描述文件封装在XML节中发送给XMPP服务器。优选的,对应的3C协同设备可以将自己的设备/服务描述文件封装在IQ节中。XMPP服务器收到设备/服务描述文件后,保存设备/服务描述文件。
一般情况下,设备/服务描述文件的数据量会比较大。为了在3C协同设备频繁上下线的环境中降低信令开销,3C协同设备在使用XML节进行设备/服务描述文件注册时,可以不将设备/服务描述文件本身封装在XML节中进行传送,而是可以将用于表示3C协同设备的设备/服务描述文件的信息封装在XML节中进行传送。对应的XMPP服务器在收到这个信息后,如果发现收到的用于表示3C协同设备的设备/服务描述文件的信息与之前保存的用于表示3C协同设备的设备/服务描述文件的信息不一致,或者,如果发现之前没有保存过用于表示3C协同设备的设备/服务描述文件的信息,则对应的XMPP服务器向3C协同设备发出提供3C协同设备的设备/服务描述文件的请求消息,3C协同设备将其设备/服务描述文件提供给对应的XMPP服务器。对应的XMPP服务器向3C协同设备发出的提供3C协同设备的设备/服务描述文件的请求消息可以是IQ节的形式,3C协同设备可以将其设备/服务描述文件封装在IQ节中发送给对应的XMPP服务器。
在实际应用中,用于表示3C协同设备的设备/服务描述文件的信息可以是对应3C协同设备的设备/服务描述文件的HASH值。具体的,3C协同设备先根据设备/服务描述文件进行HASH计算,得到一个HASH值,之后,将HASH值封装在XML进行传送。对应的XMPP服务器在收到HASH值后,可以将收到的HASH值与之前保存的HASH值进行对比,如果在保存的HASH值中没有发现收到的HASH值,或者发现收到的HASH值与对应同一个设备/服务描述文件的HASH值不一致,则对应的XMPP服务器可以使用XML节主动的向3C协同设备查询设备/服务描述文件。3C协同设备在收到查询消息后,将其设备/服务描述文件封装在XML节中发送给对应的XMPP服务器。XMPP服务器在收到设备/服务描述文件后,可以保存收到的设备/服务描述文件及对应的HASH值。
在实际应用中,用于表示3C协同设备的设备/服务描述文件的信息还可以是3C协同设备的设备/服务描述文件的标识。这个标识可以用整数型数值表示。每当3C协同设备的设备/服务描述文件发生变化时,3C协同设备可以将标识的值以1为单位进行递增。对应的XMPP服务器可以将收到的标识的值与之前保存的标识的值进行对比,以此来判断之前是否保存过3C协同设备的设备/服务描述文件或者3C协同设备的设备/服务描述文件是否发生变化。
3C协同设备可以使用XML节来查找指定的3C协同设备/服务。优选的,3C协同设备可以在发送给对应的XMPP服务器的IQ节中封装需要查找的3C协同设备/服务的类型、名称、标识等信息。对应的XMPP服务器在收到IQ节后,可以根据3C协同设备/服务的类型、名称、标识等信息查找到指定的3C协同设备/服务,并使用XMPP节向发起查找的3C协同设备返回查询响应。优选的,对应的XMPP服务器使用IQ节向发起查找的3C协同设备返回查询响应。该IQ节中可以包括指定的3C协同设备/服务的JID。另外,对应的XMPP服务器也可以将指定的3C协同设备的设备/服务描述文件封装在上述IQ节中发送给发起查找的3C协同设备。
在实际应用中,3C协同设备可以将基于SOAP的调用3C协同服务的请求信息封装在发送给对应的XMPP服务器的XML节中。优选的,封装在IQ节中。对应的XMPP服务器收到这个XML节后,可以将基于SOAP的3C协同服务的调用结果信息封装在返回给3C协同设备的XML节中。优选的,封装在IQ节中。
另外,3C协同设备可以获得对应的XMPP服务器提供的所述3C协同设备的联系人的设备/服务描述文件、用于表示所述3C协同设备的联系人的设备/服务描述文件的信息、所述3C协同设备指定的3C协同设备的设备/服务描述文件或用于表示所述3C协同设备指定的3C协同设备的设备/服务描述文件的信息。
如果所述3C协同设备确定收到的用于表示所述3C协同设备的联系人的设备/服务描述文件的信息与之前保存的用于表示所述3C协同设备的联系人的设备/服务描述文件的信息不一致,或者,如果所述3C协同设备确定之前没有保存过用于表示所述3C协同设备的联系人的设备/服务描述文件的信息,则所述3C协同设备向对应的XMPP服务器发出提供所述3C协同设备的联系人的设备/服务描述文件的请求消息,所述对应的XMPP服务器将所述3C协同设备的联系人的设备/服务描述文件提供给所述3C协同设备。
如果所述3C协同设备确定收到的用于表示所述3C协同设备指定的3C协同设备的设备/服务描述文件的信息与之前保存的用于表示所述3C协同设备指定的3C协同设备的设备/服务描述文件的信息不一致,或者,如果所述3C协同设备确定之前没有保存过用于表示所述3C协同设备指定的3C协同设备的设备/服务描述文件的信息,则所述3C协同设备向对应的XMPP服务器发出提供所述3C协同设备指定的3C协同设备的设备/服务描述文件的请求消息,所述对应的XMPP服务器将所述3C协同设备指定的3C协同设备的设备/服务描述文件提供给所述3C协同设备。
本发明还基于上述的通信系统,提供了两种通信方法。
一种通信方法如图4所示,包括:
S401:3C协同设备上线;
S402:3C协同设备与对应的XMPP服务器之间建立XML流;
S403:3C协同设备向对应的XMPP服务器提供上线信息;
S404:3C协同设备获得对应的XMPP服务器提供的所述3C协同设备的联系人的在线信息和设备/服务描述文件,或者,3C协同设备获得对应的XMPP服务器提供的所述3C协同设备的联系人的在线信息和用于表示所述3C协同设备的联系人的设备/服务描述文件的信息;
S405:3C协同设备向对应的XMPP服务器请求调用3C协同服务;
S406:3C协同设备获得对应的XMPP服务器返回的调用3C协同服务的结果。
在实际应用中,3C协同设备可以按照下述方式向对应的XMPP服务器提供上线信息,即,3C协同设备向对应的XMPP服务器发出携带有上线信息的Presence节。3C协同设备可以按照下述方式获得对应的XMPP服务器提供的所述3C协同设备的联系人的在线信息,即,3C协同设备获得对应的XMPP服务器发出的携带所述3C协同设备的联系人的在线信息的Presence节。3C协同设备也可以按照下述方式获得对应的XMPP服务器提供的所述3C协同设备的联系人的在线信息和设备/服务描述文件,即,3C协同设备获得对应的XMPP服务器发出的携带所述3C协同设备的联系人的在线信息和设备/服务描述文件的Presence节。3C协同设备还可以按照下述方式获得对应的XMPP服务器提供的所述3C协同设备的联系人的在线信息和用于表示所述3C协同设备的联系人的设备/服务描述文件的信息,即,3C协同设备获得对应的XMPP服务器发出的携带所述3C协同设备的联系人的在线信息和用于表示所述3C协同设备的联系人的设备/服务描述文件的信息的Presence节。
在实际应用中,3C协同设备可以按照下述方式获得对应的XMPP服务器提供的所述3C协同设备的联系人的设备/服务描述文件或用于表示所述3C协同设备的联系人的设备/服务描述文件的信息,即,3C协同设备获得对应的XMPP服务器发出的携带所述3C协同设备的联系人的设备/服务描述文件或用于表示所述3C协同设备的联系人的设备/服务描述文件的信息的IQ节。
在实际应用中,在3C协同设备获得对应的XMPP服务器提供的所述3C协同设备的联系人的设备/服务描述文件或用于表示所述3C协同设备的联系人的设备/服务描述文件的信息之前,3C协同设备可以向对应的XMPP服务器请求提供联系人的设备/服务描述文件。
在实际应用中,如果3C协同设备确定收到的用于表示所述3C协同设备的联系人的设备/服务描述文件的信息与之前保存的用于表示所述3C协同设备的联系人的设备/服务描述文件的信息不一致,或者,如果所述3C协同设备确定之前没有保存过用于表示所述3C协同设备的联系人的设备/服务描述文件的信息,则所述3C协同设备向对应的XMPP服务器发出提供所述3C协同设备的联系人的设备/服务描述文件的请求消息,所述对应的XMPP服务器将所述3C协同设备的联系人的设备/服务描述文件提供给所述3C协同设备。
在实际应用中,3C协同设备可以按照下述方式向对应的XMPP服务器请求提供联系人的设备/服务描述文件,即,3C协同设备向对应的XMPP服务器发出携带提供联系人的设备/服务描述文件的请求信息的IQ节。
在实际应用中,3C协同设备可以按照下述方式向对应的XMPP服务器请求调用3C协同服务,即,3C协同设备向对应的XMPP服务器发出携带调用3C协同服务的请求信息的IQ节。3C协同设备可以按照下述方式获得对应的XMPP服务器返回的调用3C协同服务的结果,即,3C协同设备获得对应的XMPP服务器发出的携带调用3C协同服务的结果信息的IQ节。
本发明提供的另一种通信方法如图5所示,包括:
S501:3C协同设备上线;
S502:3C协同设备与对应的XMPP服务器之间建立XML流;
S503:3C协同设备向对应的XMPP服务器提供上线信息;
S504:3C协同设备向对应的XMPP服务器提供所述3C协同设备的设备/服务描述文件或用于表示所述3C协同设备的设备/服务描述文件的信息。
在实际应用中,3C协同设备可以按照下述方式向对应的XMPP服务器提供上线信息,即,3C协同设备向对应的XMPP服务器发出携带有上线信息的Presence节。
在实际应用中,3C协同设备可以按照下述方式向对应的XMPP服务器提供所述3C协同设备的设备/服务描述文件或用于表示所述3C协同设备的设备/服务描述文件的信息,即,3C协同设备将所述3C协同设备的设备/服务描述文件或用于表示所述3C协同设备的设备/服务描述文件的信息封装在Presence节或IQ节中,并将所述Presence节或IQ节发送给对应的XMPP服务器。
在3C协同设备向对应的XMPP服务器提供所述3C协同设备的设备/服务描述文件或用于表示所述3C协同设备的设备/服务描述文件的信息之前,3C协同设备获得对应的XMPP服务器发出的提供设备/服务描述文件的请求信息。所述请求信息可以封装在3C协同设备获得对应的XMPP服务器发出的IQ节中。
综上所述,在本发明中,3C协同设备不但具有3C协同设备原有的功能,还具有XMPP规定的功能,3C协同设备之间可以使用携带3C协同信息的XMPP消息,通过各自对应的XMPP服务器进行交互。由于XMPP规定了XMPP设备之间可以通过各自对应的XMPP服务器实现远程交互,所以,本发明实现了在广域网范围内的3C协同设备之间的互联。
在本发明中,可以使用JID作为3C协同设备的标识,3C协同设备在将3C协同信息封装在XMPP消息中时,不将3C协同设备的IP地址封装在XMPP消息中,这样可以避免出现3C协同设备之间IP地址冲突的情形。
在本发明中,3C协同设备可以先不直接将设备/服务描述文件本身提供给对应的XMPP服务器,而是可以先将用于表示设备/服务描述文件的标识提供给对应的XMPP服务器,如果3C协同设备提供的标识与对应的XMPP服务器之前保存的所述3C协同设备的设备/服务描述文件的标识相同,则3C协同设备不必将设备/服务描述文件本身提供给对应的XMPP服务器,这样可以减小3C协同设备向对应的XMPP服务器传送的数据量。
在本发明中,如果两个3C协同设备处于同一个局域网内,那么这两个3C协同设备之间可以使用原有的3C协同机制进行消息的交互,如果两个3C协同设备处于不同的局域网内,那么这两个3C协同设备之间使用XMPP机制进行消息的交互。所以,本发明可以兼容3C协同机制和XMPP机制。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。