一种基于XMPP协议的即时通讯方法及系统与流程

文档序号:11234517阅读:324来源:国知局
一种基于XMPP协议的即时通讯方法及系统与流程

本发明属于即时通讯领域,尤其涉及一种基于xmpp协议的即时通讯方法及系统。



背景技术:

xmpp(extensiblemessagingandpresenceprotocol,可扩展消息处理现场协议)是基于xml(extensiblemarkuplanguage,可扩展标记语言)的协议,它用于im(internetmessage,即时消息)以及在线现场探测。它促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使这些因特网用户的操作系统和浏览器不同。

现有的基于xmpp协议的即时通讯存在着如下缺陷:

实现基于xmpp协议的即时通讯的前提条件是客户端与服务器的连接稳定,但是由于各种原因,客户端与服务器的连接的稳定性难以保证;

客户端包括发送端和接收端,消息传递时由于客户端与服务器的连接断开会造成传递的消息的完整性和安全性较差。

消息从发送端发出,经过服务器,到达接收端时需要消耗过多流量,资源浪费严重。



技术实现要素:

本发明所要解决的技术问题是针对现有技术的不足,提供一种基于xmpp协议的即时通讯方法及系统。

本发明解决上述技术问题的技术方案如下:一种基于xmpp协议的即时通讯方法,包括如下步骤:

s1,发送端生成即时消息,并根据预设码和即时消息按照校验规则生成首验码,将首验码和即时消息发送给服务器;

s2,服务器根据预设码和接收的即时消息按照校验规则生成再验码,判断接收的首验码和再验码是否相同,根据判断结果生成相应回执信息并发送给发送端;

s3,发送端根据接收到的相应回执信息判断是否再次发送,是则再次发送首验码和即时消息到服务器并返回s2,否则发送执行指令到服务器并执行s4;

s4,服务器根据接收的执行指令将再验码和即时消息发送给接收端;

s5,接收端根据预设码和接收的即时消息按照校验规则生成终验码,判断接收的再验码和终验码是否相同,根据判断结果生成相应回执信息并发送给服务器;

s6,服务器根据接收到的相应回执信息判断是否再次发送,是则再次发送再验码和即时消息到接收端并返回s5,否则结束。

本发明的有益效果是:通过在发送端生成首验码和即时消息,在服务器生成再验码,服务器通过首验码和再验码判断首传是否完整,发送端通过首验码和相应回执信息判断是否再次发送,实现将即时消息准确且完整地从发送端传递到服务器,在接收端生成终验码,接收端通过再验码和终验码判断再传是否完整,服务器通过再验码和相应回执信息判断是否再次发送,实现将即时消息准确且完整地从服务器传递到接收端,通过预设码和接收的即时消息按照校验规则生成首验码、再验码或终验码的方式实现校验所必须使用的预设码并未伴随即时消息一起在网络中传递,实现保证即时消息传递过程中的安全性。

在上述技术方案的基础上,本发明还可以做如下改进:

进一步,所述判断接收的首验码和再验码是否相同,根据判断结果生成相应回执信息包括:当接收的首验码和再验码相同时,则生成第一回执信息;当接收的首验码和再验码不相同时,则生成第二回执信息。

进一步,所述s3步骤包括:当发送端接收到的是第一回执信息时,发送端对第一回执信息按照校验规则进行校验并生成回执校验码,确定回执校验码与首验码相同时,则发送执行指令到服务器并执行s4,确定回执校验码与首验码不相同时,则再次发送首验码和即时消息到服务器并返回s2;当发送端接收到的是第二回执信息时,则发送端再次发送首验码和即时消息到服务器并返回s2。

进一步,所述判断接收的再验码和终验码是否相同,根据判断结果生成相应回执信息包括:当接收的再验码和终验码验码相同时,则生成第一回执信息;当接收的再验码和终验码不相同时,则生成第二回执信息。

进一步,所述s6步骤包括:当服务器接收到的是第一回执信息时,服务器对第一回执信息按照校验规则进行校验并生成回执校验码,确定回执校验码与再验码相同时,则结束,确定回执校验码与再验码不相同时,则再次发送再验码和即时消息到接收端并返回s5;当服务器接收到的是第二回执信息时,则服务器再次发送再验码和即时消息到接收端并返回s5。

进一步,所述发送端生成即时消息包括:

s11,发送端接收用户输入的信息,并对所述信息按照数据格式进行拆分,得到至少一个初始信息块;

s12,发送端根据初始信息块的格式和排列方式对所述至少一个初始信息块中的每一个初始信息块进行格式标注和排列标注;

s13,发送端根据所述至少一个初始信息块的格式标注调用匹配的压缩算法对所述至少一个初始信息块进行压缩,得到与所述至少一个初始信息块所对应的压缩信息块;

s14,发送端将与所述至少一个初始信息块所对应的压缩信息块进行合并处理,得到即时消息。

进一步,在所述s6步骤后还包括s7,所述s7步骤包括:

s71,接收端对接收的即时消息进行拆解处理,得到至少一个压缩信息块;

s72,接收端根据所述至少一个压缩信息块的格式标注调用匹配的解压算法对所述至少一个压缩信息块进行解压,得到所述至少一个初始信息块;

s73,接收端根据所述至少一个初始信息块中的每个初始信息块的排列标注对所述至少一个初始信息块进行排列组合,形成所述用户输入的信息。

进一步,所述s1步骤之前还包括s0,所述s0步骤包括:发送端和接收端分别与服务器建立连接。

进一步,所述发送端与服务器建立连接包括:

s01,发送端向服务器发送连接请求,服务器接收所述连接请求并建立连接;

s02,服务器设置监视所述连接的线程,以确定所述连接是否断开;

s03,监视所述连接的线程监测到所述连接断开时,则服务器立即做连接准备,在服务器接收到连接请求即与发送端建立连接;监视所述连接的线程监测到所述连接未断开时,则继续监视。

本发明解决上述技术问题的技术方案如下:一种基于xmpp协议的即时通讯系统,包括:发送端、服务器和接收端;所述发送端包括:生成模块和首传处理模块;所述服务器包括:首传判断模块、再传处理模块和发送模块;所述接收端包括:再传判断模块;

所述生成模块用于生成即时消息,并根据预设码和即时消息按照校验规则生成首验码,将首验码和即时消息发送给首传判断模块;

所述首传判断模块用于根据预设码和接收的即时消息按照校验规则生成再验码,判断接收的首验码和再验码是否相同,根据判断结果生成相应回执信息并发送给首传处理模块;

所述首传处理模块用于根据接收到的相应回执信息判断是否再次发送,是则再次发送首验码和即时消息到首传判断模块并调用首传判断模块,否则调用发送模块;

所述发送模块用于将再验码和即时消息发送给再传判断模块;

所述再传判断模块用于根据预设码和接收的即时消息按照校验规则生成终验码,判断接收的再验码和终验码是否相同,根据判断结果生成相应回执信息并发送给再传处理模块;

再传处理模块用于根据接收到的相应回执信息判断是否再次发送,是则再次发送再验码和即时消息到再传判断模块并调用再传判断模块,否则结束。

本发明的有益效果是:通过在发送端生成首验码和即时消息,在服务器生成再验码,服务器通过首验码和再验码判断首传是否完整,发送端通过首验码和相应回执信息判断是否再次发送,实现将即时消息准确且完整地从发送端传递到服务器,在接收端生成终验码,接收端通过再验码和终验码判断再传是否完整,服务器通过再验码和相应回执信息判断是否再次发送,实现将即时消息准确且完整地从服务器传递到接收端,通过预设码和接收的即时消息按照校验规则生成首验码、再验码或终验码的方式实现校验所必须使用的预设码并未伴随即时消息一起在网络中传递,实现保证即时消息传递过程中的安全性。

附图说明

图1为本发明一实施例提供的基于xmpp协议的即时通讯方法的流程示意图;

图2为本发明另一实施例提供的基于xmpp协议的即时通讯方法中的生成即时消息的流程示意图;

图3为本发明另一实施例提供的基于xmpp协议的即时通讯方法中的解压流程示意图;

图4为本发明实施例提供的基于xmpp协议的即时通讯系统的结构示意图。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

如图1所示,本发明一实施例提供的基于xmpp协议的即时通讯方法,包括如下步骤:

s1,发送端生成即时消息,并根据预设码和即时消息按照校验规则生成首验码,将首验码和即时消息发送给服务器;

s2,服务器根据预设码和接收的即时消息按照校验规则生成再验码,判断接收的首验码和再验码是否相同,根据判断结果生成相应回执信息并发送给发送端;

s3,发送端根据接收到的相应回执信息判断是否再次发送,是则再次发送首验码和即时消息到服务器并返回s2,否则发送执行指令到服务器并执行s4;

s4,服务器根据接收的执行指令将再验码和即时消息发送给接收端;

s5,接收端根据预设码和接收的即时消息按照校验规则生成终验码,判断接收的再验码和终验码是否相同,根据判断结果生成相应回执信息并发送给服务器;

s6,服务器根据接收到的相应回执信息判断是否再次发送,是则再次发送再验码和即时消息到接收端并返回s5,否则结束。

本发明实施例提供的基于xmpp协议的即时通讯方法,通过在发送端生成首验码和即时消息,在服务器生成再验码,服务器通过首验码和再验码判断首传是否完整,发送端通过首验码和相应回执信息判断是否再次发送,实现将即时消息准确且完整地从发送端传递到服务器,在接收端生成终验码,接收端通过再验码和终验码判断再传是否完整,服务器通过再验码和相应回执信息判断是否再次发送,实现将即时消息准确且完整地从服务器传递到接收端,通过预设码和接收的即时消息按照校验规则生成首验码、再验码或终验码的方式实现校验所必须使用的预设码并未伴随即时消息一起在网络中传递,实现保证即时消息传递过程中的安全性。

本发明另一实施例提供的基于xmpp协议的即时通讯方法,包括如下步骤:

s1,发送端生成即时消息,并根据预设码和即时消息按照校验规则生成首验码,将首验码和即时消息发送给服务器;

s2,服务器根据预设码和接收的即时消息按照校验规则生成再验码,判断接收的首验码和再验码是否相同,根据判断结果生成相应回执信息并发送给发送端;

s3,发送端根据接收到的相应回执信息判断是否再次发送,是则再次发送首验码和即时消息到服务器并返回s2,否则发送执行指令到服务器并执行s4;

s4,服务器根据接收的执行指令将再验码和即时消息发送给接收端;

s5,接收端根据预设码和接收的即时消息按照校验规则生成终验码,判断接收的再验码和终验码是否相同,根据判断结果生成相应回执信息并发送给服务器;

s6,服务器根据接收到的相应回执信息判断是否再次发送,是则再次发送再验码和即时消息到接收端并返回s5,否则结束;

如图2所示,所述发送端生成即时消息包括:

s11,发送端接收用户输入的信息,并对所述信息按照数据格式进行拆分,得到至少一个初始信息块;

s12,发送端根据初始信息块的格式和排列方式对所述至少一个初始信息块中的每一个初始信息块进行格式标注和排列标注;

s13,发送端根据所述至少一个初始信息块的格式标注调用匹配的压缩算法对所述至少一个初始信息块进行压缩,得到与所述至少一个初始信息块所对应的压缩信息块;

s14,发送端将与所述至少一个初始信息块所对应的压缩信息块进行合并处理,得到即时消息。

本发明实施例提供的基于xmpp协议的即时通讯方法,通过发送端对用户输入的信息进行拆分、标注、采用最优压缩算法进行压缩和合并处理,得到即时消息,实现格式类型不同的初始信息块采用不同的最优算法进行压缩,减少了即时消息的占用空间,减少即时消息传递过程所消耗的流量,避免了资源浪费。

如图3所示,在所述s6步骤中结束时还包括s7,所述s7步骤包括:

s71,接收端对接收的即时消息进行拆解处理,得到至少一个压缩信息块;

s72,接收端根据所述至少一个压缩信息块的格式标注调用匹配的解压算法对所述至少一个压缩信息块进行解压,得到所述至少一个初始信息块;

s73,接收端根据所述至少一个初始信息块中的每个初始信息块的排列标注对所述至少一个初始信息块进行排列组合,形成所述用户输入的信息。

本发明实施例提供的基于xmpp协议的即时通讯方法,通过接收端对即时消息进行拆解、采用最优解压算法进行解压和排列组合处理,得到用户输入的信息,实现格式类型不同的压缩信息块采用不同的最优解压算法进行解压,减少了即时消息的占用空间,减少即时消息传递过程所消耗的流量,避免了资源浪费。

该实施例中,所述预设码是预先设置在发送端、接收端和服务器中的一种编码,利用此预设码和即时消息根据校验规则能够生成首验码、再验码或是终验码,此预设码并不与即时消息一起在网络中传递,保证即时消息的安全性。所述校验规则可以为md5(messagedigestalgorithm,第五版即时消息摘要算法),根据预设码和即时消息按照md5生成首验码、再验码和终验码,若即时消息中的数据在从发送端到服务器的传递过程中发生一点变化或修改则生成的首验码和再验码将不再相同,若即时消息中的数据在从服务器到接收端的传递过程中发生一点变化或修改则生成的再验码和终验码将不再相同,如此即可保证即时消息传递的完整性和准确性。

发送端先按照s11步骤到s14步骤描述的内容接收用户输入的信息,并进行压缩处理,从而生成即时消息;再按照s1步骤到s6步骤描述的内容进行传输校验;最后由接收端按照s71步骤到s73步骤描述的内容进行解压处理得到用户输入的信息。从而实现了即时消息的传递和使用最小流量进行传递。

s11步骤中,发送端采用现有技术中存在的方法对信息按照数据格式进行拆分,得到至少一个初始信息块,相邻的初始信息块的格式不同;s12步骤中,不同格式的初始信息块采用不同的格式标注;s13步骤中,当初始信息块为多个且存在相同格式的情况时,对于格式相同的多个初始信息块可采用同一压缩算法进行统一压缩,得到一个压缩信息块,也可采用同一压缩算法分别进行压缩,得到多个压缩信息块。匹配的压缩算法是与格式标注所代表的数据格式类型对应的最优压缩算法。对于格式相同的多个初始信息块采用统一压缩时,s72步骤中是调用匹配的解压算法对一个压缩信息块进行解压,得到多个初始信息块,对于格式相同的多个初始信息块采用分别压缩时,s72步骤中是调用匹配的解压算法对多个压缩信息块进行解压,得到与多个压缩信息块对应的初始信息块。

下面以一具体例子说明最优压缩算法:用户输入的信息的格式均是文本格式,现有技术中对文本格式的信息进行压缩的方式有多种,采用字符压缩算法压缩得快且准确,压缩后信息占用空间小,因而将字符压缩算法作为文本格式对应的最优压缩算法。最优解压算法与最优压缩算法类似,在此不再赘述。

可选地,本发明实施例中,所述判断接收的首验码和再验码是否相同,根据判断结果生成相应回执信息包括:当接收的首验码和再验码相同时,则生成第一回执信息;当接收的首验码和再验码不相同时,则生成第二回执信息。

该实施例中,第一回执信息和第二回执信息的内容不同,第一回执信息设置为固定不变的,第二回执信息是随意生成的,可为任意值。回执信息的格式可以是ask码形式。s2步骤中的判断只能生成一种相应回执信息,要么是第一回执信息,要么是第二回执信息。

可选地,本发明实施例中,所述s3步骤包括:当发送端接收到的是第一回执信息时,发送端对第一回执信息按照校验规则进行校验并生成回执校验码,确定回执校验码与首验码相同时,则发送执行指令到服务器并执行s4,确定回执校验码与首验码不相同时,则再次发送首验码和即时消息到服务器并返回s2;当发送端接收到的是第二回执信息时,则发送端再次发送首验码和即时消息到服务器并返回s2。

该实施例中,第一回执信息有可能是其他客户端或是服务器冒充发送的,因而发送端需要对第一回执信息进行校验。当发送端确定回执校验码与首验码相同时,说明即时消息首传完整且第一回执信息完整、准确到达发送端,确定第一回执信息是由服务器发送的;当发送端确定回执校验码与首验码不同时,说明第一回执信息是其他客户端或是服务器冒充发送的,则发送端再次发送首验码和即时消息到服务器,直到收到服务器发送的第一回执信息,且根据第一回执信息生成的回执校验码与首验码相同;当发送端接收到的是第二回执信息时,说明服务器接收的即时消息不完整和/或被修改,因而发送端需要再次发送首验码和即时消息到服务器,直到收到服务器发送的第一回执信息,且根据第一回执信息生成的回执校验码与首验码相同,发送端从日志中调取首验码和即时消息,再次发送给服务器。校验规则可以是md5(messagedigestalgorithm,第五版即时消息摘要算法),对第一回执信息进行校验所采用的校验规则与生成首验码、再验码或终验码所采用的校验规则相同。首传完整是指即时消息从发送端准确且完整的到达服务器。

上述实施例中,通过对首验码和再验码相同时生成的第一回执信息进行校验使得发送端确定首传是否完整,回执信息是否由服务器发送,实现提高即时消息传递的安全性,确定首验码和再验码不相同时生成的第二回执信息使得发送端确定首传不完整且再次发送,实现提高即时消息从发送端传递到服务器过程中的完整性和准确性。

可选地,本发明实施例中,所述判断接收的再验码和终验码是否相同,根据判断结果生成相应回执信息包括:当接收的再验码和终验码验码相同时,则生成第一回执信息;当接收的再验码和终验码不相同时,则生成第二回执信息。

该实施例中,由于首验码、再验码和终验码是根据预设码和即时消息按照校验规则生成的,而在发送端、服务器和接收端设置的预设码一致,即时消息一致,校验规则一致,故若传输过程完整且准确,则生成的首验码、再验码和终验码是一致的。因而在s2步骤中生成的第一回执信息与s5步骤中生成的第一回执信息一致,或在s2步骤中生成的第二回执信息与s5步骤中生成的第二回执信息对应。第一回执信息和第二回执信息的内容不同,第一回执信息设置为固定不变的,第二回执信息是随意生成的,可为任意值。回执信息的格式可以是ask码形式。s5步骤中的判断只能生成一种相应回执信息,要么是第一回执信息,要么是第二回执信息。

可选地,本发明实施例中,所述s6步骤包括:当服务器接收到的是第一回执信息时,服务器对第一回执信息按照校验规则进行校验并生成回执校验码,确定回执校验码与再验码相同时,则结束,确定回执校验码与再验码不相同时,则再次发送再验码和即时消息到接收端并返回s5;当服务器接收到的是第二回执信息时,则服务器再次发送再验码和即时消息到接收端并返回s5。

该实施例中,第一回执信息有可能是其他客户端或是服务器冒充发送的,因而服务器需要对第一回执信息进行校验。当服务器确定回执校验码与再验码相同时,说明即时消息再传完整且第一回执信息完整、准确到达服务器,确定第一回执信息是由接收端发送的;当服务器确定回执校验码与再验码不同时,说明第一回执信息是其他客户端或是服务器冒充发送的,则服务器再次发送再验码和即时消息到接收端,直到收到接收端发送的第一回执信息,且根据第一回执信息生成的回执校验码与再验码相同;当服务器接收到的是第二回执信息时,说明接收端接收的即时消息不完整和/或被修改,因而服务器需要再次发送再验码和即时消息到接收端,直到收到接收端发送的第一回执信息,且根据第一回执信息生成的回执校验码与再验码相同,服务器从日志中调取再验码和即时消息,再次发送给接收端。校验规则可以是md5(messagedigestalgorithm,第五版即时消息摘要算法),对第一回执信息进行校验所采用的校验规则与生成首验码、再验码或终验码所采用的校验规则相同。再传完整是指即时消息从服务器准确且完整的到达接收端。

上述实施例中,通过对再验码和终验码相同时生成的第一回执信息进行校验使得服务器确定再传是否完整,回执信息是否由接收端发送,实现提高即时消息传递的安全性,确定再验码和终验码不相同时则生成的第二回执信息使得服务器确定再传不完整且再次发送,实现提高即时消息从服务器传递到接收端过程中的完整性和准确性。

可选地,本发明实施例中,所述s1步骤之前还包括s0,所述s0步骤包括:发送端和接收端分别与服务器建立连接。

可选地,本发明实施例中,所述发送端与服务器建立连接包括:

s01,发送端向服务器发送连接请求,服务器接收所述连接请求并建立连接;

s02,服务器设置监视所述连接的线程,以确定所述连接是否断开;

s03,监视所述连接的线程监测到所述连接断开时,则服务器立即做连接准备,在服务器接收到连接请求即与发送端建立连接;监视所述连接的线程监测到所述连接未断开时,则继续监视。

该实施例中,接收端与服务器建立连接的方式同发送端与服务器建立连接的方式相比,其不同之处仅在于与服务器建立连接的对象不同,前者是接收端,后者是发送端,因而接收端与服务器建立连接的过程在此不再赘述。

本发明实施例所述的连接方式可应用在长连接轮训方式或是websocket方式上。所述连接准备包括对连接需要的参数进行设置等。所述服务器接收到连接请求包括服务器接收到发送端发送的连接请求或是服务器接收到服务器发送的连接请求。

上述实施例中,通过服务器设置监视连接的线程,确定连接是否断开,并在断开时立即做连接准备,当服务器或发送端发送连接请求时即可实现连接,从而保证发送端与服务器的连接,提高连接的稳定性。

如图4所示,本发明实施例提供的基于xmpp协议的即时通讯系统,包括:发送端、服务器和接收端;所述发送端包括:生成模块和首传处理模块;所述服务器包括:首传判断模块、再传处理模块和发送模块;所述接收端包括:再传判断模块;

所述生成模块用于生成即时消息,并根据预设码和即时消息按照校验规则生成首验码,将首验码和即时消息发送给首传判断模块;

所述首传判断模块用于根据预设码和接收的即时消息按照校验规则生成再验码,判断接收的首验码和再验码是否相同,根据判断结果生成相应回执信息并发送给首传处理模块;

所述首传处理模块用于根据接收到的相应回执信息判断是否再次发送,是则再次发送首验码和即时消息到首传判断模块并调用首传判断模块,否则调用发送模块;

所述发送模块用于将再验码和即时消息发送给再传判断模块;

所述再传判断模块用于根据预设码和接收的即时消息按照校验规则生成终验码,判断接收的再验码和终验码是否相同,根据判断结果生成相应回执信息并发送给再传处理模块;

再传处理模块用于根据接收到的相应回执信息判断是否再次发送,是则再次发送再验码和即时消息到再传判断模块并调用再传判断模块,否则结束。

本发明实施例提供的基于xmpp协议的即时通讯系统,通过在发送端生成首验码和即时消息,在服务器生成再验码,服务器通过首验码和再验码判断首传是否完整,发送端通过首验码和相应回执信息判断是否再次发送,实现将即时消息准确且完整地从发送端传递到服务器,在接收端生成终验码,接收端通过再验码和终验码判断再传是否完整,服务器通过再验码和相应回执信息判断是否再次发送,实现将即时消息准确且完整地从服务器传递到接收端,通过预设码和接收的即时消息按照校验规则生成首验码、再验码或终验码的方式实现校验所必须使用的预设码并未伴随即时消息一起在网络中传递,实现保证即时消息传递过程中的安全性。

本发明实施例提供的基于xmpp协议的即时通讯系统中各个模块所执行的功能已经在上述实施例基于xmpp协议的即时通讯方法中做了详细介绍,在此不再赘述。

本发明所有实施例中,发送端和接收端只是为了说明即时消息的传递过程,发送端和接收端均在浏览器上并用于即时消息通讯。发送端和接收端根据所处理的内容可进行转换,例如接收端要发送即时消息时就成为了“发送端”,处理“发送端”应处理内容。发送端、接收端和服务器在进行各种处理时均将处理涉及的数据存储在日志中,从而实现再次发送的调取。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1