一种基于xmpp协议的即时通讯方法及系统的制作方法

文档序号:9399173阅读:682来源:国知局
一种基于xmpp协议的即时通讯方法及系统的制作方法
【技术领域】
[0001]本发明属于通讯和计算机的技术领域,具体地涉及一种基于XMPP协议的即时通讯方法,以及基于XMPP协议的即时通讯系统。
【背景技术】
[0002]XMPP(Extensible Messaging and Presence Protocol,可扩展消息处理现场协议)是基于XML(Extensible Markup Language,可扩展标记语言)的协议,它用于IKInternet Message,即时消息)以及在线现场探测。它促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使这些因特网用户的操作系统和浏览器不同。
[0003]XMPP协议是自由、开放、公开的,并且易于了解。而且在客户端、服务器、组件、源码库等方面,都已经各自有多种实现。XMPP的技术规格已被定义在RFC 3920及RFC 3921。任何頂供应商在遵循XMPP协议下,都可与Google Talk实现连接。
[0004]第一个Jabber (现在称为XMPP)技术是Jeremie Miller在1998年开发的,现在已经相当稳定;数以百计的开发者为XMPP技术而努力。今日的互联网上有数以万计的XMPP服务器运作者,并有数以百万计的人们使用XMPP实时传讯软件。
[0005]XMPP网络的架构和电子邮件十分相像;XMPP核心协议通信方式是先创建一个stream, XMPP以TCP传递XML数据流,没有中央主服务器。任何人都可以运行自己的XMPP服务器,使个人及组织能够掌控他们的实时传讯体验。
[0006]XMPP除了可用在实时通信的应用程序,还能用在网络管理、内容供稿、协同工具、文件共享、游戏、远程系统监控等。
[0007]但是,XMPP协议也存在着缺点,例如XMPP协议本身是不管对方是否收到消息,一旦自己发送出去,就说明本条消息发送成功。而所有移动通讯消息都会受到网络信号强弱的影响,在网络信号较弱的情况下,消息就有可能丢失。由于不知接收方是否收到消息,发送方一般都会发送若干遍相同的消息,这样就会造成重复发送消息。

【发明内容】

[0008]本发明的技术解决问题是:克服现有技术的不足,提供一种基于XMPP协议的即时通讯方法,其不管移动网络是否稳定都能保证消息的准确到达,实现不丢消息,不重复发送消息。
[0009]本发明的技术解决方案是:这种基于XMPP协议的即时通讯方法,包括以下步骤:
[0010](I)接收第一终端发来的第一消息,根据所述第一消息向所述第一终端发送第一回执;
[0011](2)将所述第一消息转发给所述第一消息的目标用户所在的第二终端,同时将所述第一消息存入redis数据库中;
[0012](3)在预定时间内若没有收到所述第二终端发来的第二回执,则将所述第一消息重新发送给所述第二终端;若收到所述第二终端发来的第二回执,则根据所述第二回执将所述redis数据库中的所述第一消息删除。
[0013]还提供了一种基于XMPP协议的即时通讯系统,所述系统包括:
[0014]第一接收模块,用于接收第一终端发来的第一消息,根据所述第一消息向所述第一终端发送第一回执;
[0015]转发模块,用于将所述第一消息转发给所述第一消息的目标用户所在的第二终端,同时将所述第一消息存入redis数据库中;
[0016]第二接收模块,用于在预定时间内没有收到所述第二终端发来的第二回执时,将所述第一消息重新发送给所述第二终端;或用于在收到所述第二终端发来的第二回执时,根据所述第二回执将所述redis数据库中的所述第一消息删除。
[0017]本发明采用回执模式,并且将未收到回执的消息存入redis数据库而反复发送,只有超时情况下才不再发送,但会将该消息转存到数据库中,因此不管移动网络是否稳定都能保证消息的准确到达,实现不丢消息,不重复发送消息。
【附图说明】
[0018]图1为本发明一个实施例中基于XMPP协议的即时通讯方法的流程示意图;
[0019]图2为本发明另一个实施例中基于XMPP协议的即时通讯系统的模块结构示意图;
[0020]图3为本发明一个优选实施例中的典型应用场景示意图;
[0021]图4为本发明另一个优选实施例中典型应用场景的方法流程示意图。
【具体实施方式】
[0022]本发明实施例中通过回执机制保证了 XMPP协议消息的准确送达,如图1所示,在本发明的一个实施例中,基于XMPP协议的即时通讯方法包括步骤:
[0023](I)接收第一终端发来的第一消息,根据所述第一消息向所述第一终端发送第一回执;
[0024](2)将所述第一消息转发给所述第一消息的目标用户所在的第二终端,同时将所述第一消息存入redis数据库中;
[0025](3)在预定时间内若没有收到所述第二终端发来的第二回执,则将所述第一消息重新发送给所述第二终端;若收到所述第二终端发来的第二回执,则根据所述第二回执将所述redis数据库中的所述第一消息删除。
[0026]本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括上述实施例方法的各步骤,而所述的存储介质可以是:R0M/RAM、磁碟、光盘、存储卡等。因此,与本发明的方法相对应的,本发明还同时包括一种基于XMPP协议的即时通讯系统,该系统通常以与方法各步骤相对应的功能模块的形式表示;如图2所示,所述系统包括:
[0027]第一接收模块,用于接收第一终端发来的第一消息,根据所述第一消息向所述第一终端发送第一回执;
[0028]转发模块,用于将所述第一消息转发给所述第一消息的目标用户所在的第二终端,同时将所述第一消息存入redis数据库中;
[0029]第二接收模块,用于在预定时间内没有收到所述第二终端发来的第二回执时,将所述第一消息重新发送给所述第二终端;或用于在收到所述第二终端发来的第二回执时,根据所述第二回执将所述redis数据库中的所述第一消息删除。
[0030]进一步如图3所示,本发明的优选实施例中,基于XMPP协议的即时通讯系统通过服务器在第一用户A(使用第一终端)和第二用户B (使用第二终端)之间进行基于XMPP协议的即时通讯,在图3所示的典型应用场景中:
[0031]用户A,其配置来发送第一消息到服务器;
[0032]服务器,其配置来通过第一消息中的消息ID,给用户A发送第一回执消息;将第一消息发送给用户B,并且服务器将第一消息存到redis数据库中;判断是否收到用户B发送的第二回执消息,如果收到就根据第二回执消息中的消息ID,将存到redis数据库中的第一消息删除,如果没有收到并且没有超过指定时间就在指定时间间隔后重新发送第一消息,如果没有收到但是超过指定时间则将第一消息从redis数据库删除并转存到数据库中;
[0033]用户B,其配置来接收第一消息,并向服务器发送第二回执消息。
[0034]其中,第一用户A和第二用户B使用的第一终端和第二终端可以是任意网络终端(包括但不限于PC、手机、PAD、移动终端和嵌入式系统等),即时通讯使用第一终端和第二终端中任意支持XMPP协议的应用(包括但不限于浏览器、邮件系统、嵌入式应用、移动APP、安卓应用、1S应用、web客户端和PC客户端等)均可。在某些实施方式中,第一终端和第二终端甚至可以是同一终端,第一用户A和第二用户B是在该终端中使用相同或不同应用的不同用户;在某些极端的情况下,第一用户A和第二用户B甚至可以是同一用户。
[0035]如图4所示,本发明的另一优选实施例对上述优选场景中采用的基于XMPP协议的即时通讯方法做了详细描述,包括以下步骤:
[0036](I)用户A发送第一消息到服务器;
[0037](2)服务器通过第一消息中的消息ID,给用户A发送第一回执消息,证明用户A发送第一消息成功;
[0038](3)由服务器将第一消息发送给用户B,并且服务器将第一消息存到redis数据库中;
[0039](4)服务器判断是否收到用户B发送的第二回执消息,如果收到就执行步骤(5),如果没有收到并且没有超过指定时间就执行步骤(6),如果没有收到但是超过指定时间则执行步骤⑵;
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1