基于xmpp扩展消息的消息分类实现的方法及装置的制造方法

文档序号:9306628阅读:259来源:国知局
基于xmpp扩展消息的消息分类实现的方法及装置的制造方法
【技术领域】
[0001] 本发明涉及即时通信领域,尤指一种基于XMPP扩展消息的消息分类实现的方法 及装置。
【背景技术】
[0002] 现有技术方案,消息采用XML格式字符串进行描述,要想利用XML或者说利用XML 文件中所编码的数据,必须先将数据从纯文本中解析出来。因此要求必须有一个能够识别 XML文档中信息的文本文件阅读器,即XML解析器。XML解析器是将一个未经处理的字条串 序列作为输入并对它执行一些特定的操作。解析器读入XML文档,建立XML语法和类之间 的一对一映射。解析时根据各种消息xml实体标签名(tag)与名称空间(xmlns)对消息进 行分类,解析完成后交由各类消息对应的消息处理器进行处理。
[0003] XMPP存在三大类别的消息指令,作为消息XML的最外层节点,里层就是一个个被 包裹的扩展消息指令,每个消息指令有其对应的XML标签名(tag)与名称空间(xmlns),每 个消息指令内部包裹着该消息指令的子元素的XML节点。当消息被解析的时候,根据最外 层标签识别出消息指令所属哪个消息类别(指iq、presence或message),再进入分类进一 步地解析具体的消息指令,现有技术一根据自定义扩展的消息指令对应的XML标签(tag) 与名称空间(xmlns)找到事先注册与之对应的解析器,解析器被要求一律实现对其内部子 元素的解析。而每创建一种消息指令,就得提供相应的解析器。按XMPP协议约定,现有技 术一基于XML标识语言约定通信协议表示层,由于其对消息的格式要求较为严格,语法较 为罗嗉,虽然具备良好的可扩展性,但在面对当今庞大的移动互联网数据通信,其在传输、 解析及对移动流量消耗上表现不如人意。
[0004] 另外,现有技术一规定为每一个扩展消息类别定义一个符合XML格式的标签名 (tag)与名称空间(xmlns),以此来唯一标识一个扩展消息类别,并对每个扩展消息类别注 册对应的解析器,每个解析器按照协议要求需要实现解码接口,在服务端需要对应的消息 类别处理器(如图1所示)。这样一来,开发工作量将与扩展消息类别数量呈线性增长,不 利于提尚工作效率。

【发明内容】

[0005] 本发明目的在于解决上述现有技术中存在的工作效率低,传输流量较高等技术问 题,提供一种新的基于XMPP扩展消息的消息分类实现的方法及装置。
[0006] 为达上述目的,本发明所提供的基于XMPP扩展消息的消息分类实现的方法,具体 包含:在XMPP协议栈中加入编解码协议层,将复数个扩展消息封装于所述编解码协议层 中;通过所述编解码协议层将所述复数个扩展消息统一发送至一消息解码分发器解析;根 据解析结果对所述复数个扩展消息进行分发处理。
[0007] 在上述基于XMPP扩展消息的消息分类实现的方法中,优选的还包含:所述编解码 协议层用于将所述复数个扩展消息定义为同一消息解码分发器和同一解码格式。
[0008] 在上述基于XMPP扩展消息的消息分类实现的方法中,优选的还包含:所述解码格 式为表示层数据格式。
[0009] 在上述基于XMPP扩展消息的消息分类实现的方法中,优选的还包含:所述扩展消 息标签名与名称空间为所述扩展消息对应编程语言类的类名与名称空间。
[0010] 在上述基于XMPP扩展消息的消息分类实现的方法中,优选的还包含:通过所述消 息解码分发器解析所述复数个扩展消息,获得所述复数个扩展消息的节点位置;根据所述 节点位置,将所述扩展消息分发至对应位置进行处理。
[0011] 本发明还提供一种基于XMPP扩展消息的消息分类实现的装置,所述装置具体包 含:编码模块,在XMPP协议栈中加入编解码协议层,将复数个扩展消息放置于所述编解码 协议层中;编解码协议模块,通过所述编解码协议层将所述复数个扩展消息统一发送至一 消息解码分发器解析;消息分发模块,用于根据解析结果对所述复数个扩展消息进行分发 处理。
[0012] 在上述基于XMPP扩展消息的消息分类实现的装置中,优选的还包含:所述编解码 协议模块还用于通过所述编解码协议层将所述复数个扩展消息定义为同一消息解码分发 器和同一解码格式。
[0013] 在上述基于XMPP扩展消息的消息分类实现的装置中,优选的还包含:所述编码模 块还用于将所述扩展消息标签名与名称空间编码为所述扩展消息对应编程语言类的类名 与名称空间。
[0014] 在上述基于XMPP扩展消息的消息分类实现的装置中,优选的还包含:所述消息分 发模块还用于:通过所述消息解码分发器解析所述复数个扩展消息,获得所述复数个扩展 消息的节点位置;根据所述节点位置,将所述扩展消息分发至对应位置进行处理。
[0015] 本发明的有益技术效果在于:通过在扩展指令消息上层增加对消息编解码表示层 约定,来实现统一的对象消息转换机制,从而无需再针对每个扩展消息提供解析器,以提高 开发效率;另外通过引用轻量级JSON混合编码,达到既能满足可扩展性,又能降低消息在 移动应用上消耗传输流量的目的。
【附图说明】
[0016] 此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不 构成对本发明的限定。在附图中:
[0017] 图1为现有技术中XMPP数据分类解析示意图;
[0018] 图2为本发明所提供的基于XMPP扩展消息的消息分类实现的方法的流程示意 图;
[0019] 图3为本发明所提供的基于XMPP扩展消息的消息分类实现的方法一优选实施例 解析示意图。
【具体实施方式】
[0020] 为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合实施例和附 图,对本发明做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明, 但并不作为对本发明的限定。
[0021] 在即时通信领域,XMPP协议受到业界的普遍认可,并衍生出许多开源的中间件,如 XMPP服务器Openfire、Smart客户端组件等。基于此,第三方应用可根据XMPP保留的扩展 消息机制,实现自身业务扩展消息与指令,来满足自身的业务需求。
[0022] 在XMPP通信协议中,定义了常用的三大类型消息,包括信息查询与设置(iq)、出 席状态变更通知(presence)及用户聊天消息(message),其中iq指令通过于用户与服务器 之间的信息查询与设置,而presence则用于发送用户状态的变更,其目的是通知已在线用 户实时感知各种状态的变化,如好友上下线等;message则用于发送用户之间的聊天消息, 也可以用于物联网应用分布装置间的消息传递,这些消息在接收方不在线时将被离线保 存。在XMPP协议里,定义了各种通用的场景的子协议,如好友名册管理、群聊天室管理。然 而这种场景并无法满足所有业务的需要,因此XMPP还制订了一套自定义指令的扩展方式, 本方法正是基于XMPP扩展消息的JSON编解码消息分类实现的一种方法。
[0023] 在请参考图2所示,本发明所提供的基于XMPP扩展消息的消息分类实现的方法, 具体包含:SlOl在XMPP协议栈中加入编解码协议层,将复数个扩展消息封装于所述编解码 协议层中;S102通过所述编解码协议层将所述复数个扩展消息统一发送至一消息解码分 发器解析;S103根据解析结果对所述复数个扩展消息进行分发处理。
[0024] 在上述步骤SlOl中,所述编解码协议层用于将所述复数个扩展消息定义为同一 消息解码分发器和同一解码格式。具体方式,可在所述复数个扩展消息前缀处加入约定字 符串,通过所述约定的字符串定义其后的扩展消息为一特定解码格式和在特定位置解码。 其中,所述特定解码格式为表示层数据格式,例如JSON数据交换格式等轻量级混合编码, 值得说明的是,本领域相关技术人员当可知,上述JSON数据交换格式仅为一较佳实施例, 本发明并不限定仅仅采用JSON数据交换格式,任何能达到本发明需求功效的数据格式均 应包含在本发明的保护范围之内。
[0025] 在上述步骤SlOl中,为编译方便,可在编码之前对所述扩展消息进行预处理,例 如将所述扩展消息标签名与名称空间为所述扩展消息对应编程语言类的类名与名称空间; 以此便于后期选择解码器时更为简便。
[0026] 在上述步骤S103中,所述根据解析结果对所述复数个扩展消息进行分发处理包 含:通过所述消息解码分发器解析所述复数个扩展消息,获得所述复数个扩展消息的节点 位置;根据所述节点位置,将所述扩展消息分发至对应位置进行处理。该处理方式依旧通过 XMPP协议定义的方式分发,以此,使得在原XMPP协议改动较小的情况下达成本发明的上述 效果。
[0027] 本发明还提供一种基于XMPP扩展消息的消息分类实现的装置,所述装置具体包 含:编码模块,在XMPP协议栈中加入编解码协议层,将复数个扩展消息放置于所述编解码 协议层中;编解码协议模块,通过所述编解码协议层将所述复数个扩展消息统一发送至一 消息解码分发器解析;消息分发模块,用于根据解析结果对所述复数个扩展消息进行分发 处理。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1