消息处理方法和装置与流程

文档序号:11234518
消息处理方法和装置与流程

本发明涉及消息处理领域,具体而言,涉及一种消息处理方法和装置。



背景技术:

目前,不稳定的网络环境会影响客户端对消息的处理效率,主要体现为在2g/3g/4g网、无线局域网(wireless-fidelity,简称为wifi)的频繁切换,以及移动网络的延迟和波动,比如,当前手游存在的重要问题之一为网络环境不稳定。这种不稳定的网络环境给客户端的消息处理带来了以下几个主要问题:

(1)使客户端与服务器间之间的数据传输不一致;

(2)由于缺乏网络连接状态管理而导致在弱网时的用户体验低;

(3)由于会出现不必要的重连、重登陆等,带来流量的耗费。

另外,目前对消息的管理方式是基于消息类型的,这种方式通过消息的类型(msgtype)来标识一条消息,它的好处是易于实现。因为消息收发库自带消息类型,只要根据内部定义的消息类型来管理消息即可。但是,如果存在两条或以上同种类型的消息时,就无法对其做唯一标识。这样当网络较差,出现丢包的情况时,客户端就无法区分服务器回复的哪条发送消息,从而导致消息处理的效率低下。

现有的手游的连接管理是对关键状态的追踪,主要包含连接中、连接超时、连接断开三个状态。然而,由于对状态缺乏细分和转移建模,并没有基于状态细分以及状态间转移关系来给游戏玩家更精确的反馈,显然也不能满足日益增进的用户需求。

针对上述对消息处理的效率低下的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种消息处理方法和装置,以至少解决相关技术中对消息处理的效率低下的技术问题。

根据本发明实施例的一个方面,提供了一种消息处理方法。该方法包括:从消息队列中获取第一消息,其中,消息队列中存储多条待发送消息;当第一消息的类型为第一类型时,向服务器发送第一消息和第一序号,其中,第一序号用于对第一消息进行标识;接收服务器发送的第一响应消息,其中,第一响应消息用于表示服务器已对第一消息进行处理,第一响应消息携带有第一序号;从消息队列中移除第一消息。

根据本发明实施例的另一个方面,还提供了一种消息处理方法。该方法包括:接收消息队列中的第一消息和第一序号,其中,消息队列中存储多条待发送消息,第一消息的类型为第一类型,第一序号用于对第一消息进行标识;对第一消息进行处理,得到第一响应消息,其中,第一响应消息携带有第一序号;向客户端发送第一响应消息,其中,在客户端接收到第一响应消息之后,第一消息移除了消息队列。

根据本发明实施例的另一个方面,还提供了一种消息处理装置。该装置包括:获取单元,用于从消息队列中获取第一消息,其中,消息队列中存储多条待发送消息;发送单元,用于当第一消息的类型为第一类型时,向服务器发送第一消息和第一序号,其中,第一序号用于对第一消息进行标识;接收单元,用于接收服务器发送的第一响应消息,其中,第一响应消息用于表示服务器已对第一消息进行处理,第一响应消息携带有第一序号;移除单元,用于从消息队列中移除第一消息。

根据本发明实施例的另一方面,还提供了一种消息处理装置。该装置包括:接收单元,用于接收消息队列中的第一消息和第一序号,其中,消息队列中存储多条待发送消息,第一消息的类型为第一类型,第一序号用于对第一消息进行标识;处理单元,用于对第一消息进行处理,得到第一响应消息,其中,第一响应消息携带有第一序号;发送单元,用于向客户端发送第一响应消息,其中,在客户端接收到第一响应消息之后,第一消息移除了消息队列。

在本发明实施例中,从消息队列中获取第一消息,其中,消息队列中存储多条待发送消息;当第一消息的类型为第一类型时,向服务器发送第一消息和第一序号,其中,第一序号用于对第一消息进行标识;接收服务器发送的第一响应消息,其中,第一响应消息用于表示服务器已对第一消息进行处理,第一响应消息携带有第一序号;从消息队列中移除第一消息,由于通过给消息队列中的消息添加唯一序号,接收到服务器发送的响应消息中自带对应的序号,这样客户端在处理收到的响应消息便能对其唯一标识,从而保证客户端与服务器之间数据的一致性,达到了提高消息处理效率的技术效果,进而解决了相关技术中对消息处理的效率低下的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的一种消息处理方法的硬件环境的示意图;

图2是根据本发明实施例的一种消息处理方法的流程图;

图3是根据本发明实施例的另一种消息处理方法的流程图;

图4是根据本发明实施例的另一种消息处理方法的流程图;

图5是根据本发明实施例的另一种消息处理方法的流程图;

图6是根据本发明实施例的另一种消息处理方法的流程图;

图7是根据本发明实施例的另一种消息处理方法的流程图;

图8是根据本发明实施例的另一种消息处理方法的流程图;

图9是根据本发明实施例的另一种消息处理方法的流程图;

图10是根据本发明实施例的另一种消息处理方法的流程图;

图11是根据本发明实施例的另一种消息处理方法的流程图;

图12是根据本发明实施例的另一种消息处理方法的流程图;

图13是根据本发明实施例的另一种消息处理方法的流程图;

图14是根据本发明实施例的另一种消息处理方法的流程图;

图15是根据本发明实施例的一种基于客户端的消息发送方法的交互流程图;

图16是根据本发明实施例的一种基于服务器的消息接收的流程图;

图17是根据本发明实施例的一种客户端的连接状态机的示意图;

图18是根据本发明实施例的一种消息提示的界面示意图;

图19是根据本发明实施例的另一种消息提示的界面示意图;

图20是根据本发明实施例的一种消息处理装置的示意图;

图21是根据本发明实施例的另一种消息处理装置的示意图;以及

图22是根据本发明实施例的一种终端的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例1

根据本发明实施例,提供了一种消息处理方法的实施例。

可选地,在本实施例中,上述消息处理方法可以应用于如图1所示的由服务器102和终端104所构成的硬件环境中。图1是根据本发明实施例的一种消息处理方法的硬件环境的示意图。如图1所示,服务器102通过网络与终端104进行连接,上述网络包括但不限于:广域网、城域网或局域网,终端104并不限定于pc、手机、平板电脑等。本发明实施例的消息处理方法可以由服务器102来执行,也可以由终端104来执行,还可以是由服务器102和终端104共同执行。其中,终端104执行本发明实施例的消息处理方法也可以是由安装在其上的客户端来执行。

图2是根据本发明实施例的一种消息处理方法的流程图。如图2所示,该方法可以包括以下步骤:

步骤s202,从消息队列中获取第一消息。

在本发明上述步骤s202提供的技术方案中,从消息队列中获取第一消息,其中,消息队列中存储多条待发送消息。

该实施例的消息队列用于存储客户端向服务器待发的多条消息,该消息可以为在客户端向服务器发送查询请求时发送的消息,比如,在客户端拉取玩家等级使用的普通消息,也可以为在客户端向服务器发送更新请求时发送的消息,比如,在客户端购买物品、领取奖励时使用的阻塞消息,其中,客户端可以为游戏客户端。

在预设网络环境下,从消息队列中获取第一消息,该第一消息为插入消息队列中的消息。该预设网络环境可以为网络环境不稳定的网络环境,比如,在2g/3g/4g、wifi的频繁切换的网络环境下,可以为移动网络的延迟和波动的网络环境。

步骤s204,当第一消息的类型为第一类型时,向服务器发送第一消息和第一序号。

在本发明上述步骤s204提供的技术方案中,当第一消息的类型为第一类型时,向服务器发送第一消息和第一序号,其中,第一序号用于对第一消息进行标识。

消息队列中的每个消息通过序号进行唯一标识,可选地,消息队列中的消息的序号按照发送的时间递增,客户端也可以在消息发送的时候,赋予消息对应的序号。

消息队列中的消息具有不同的类型,在从消息队列中获取第一消息之后,判断第一消息的类型。该第一类型的消息在向客户端发送时会阻塞消息队列中位于该第一消息之后的消息,也即,在客户端接收到服务器对第一消息进行响应的响应消息之前,暂停发送在消息队列中的第一消息之后的消息,直到在客户端接收到服务器对第一消息进行响应的响应消息之后,才可以发送消息队列中的第一消息之后的消息,该第一类型的第一消息为阻塞消息。可选地,第一类型的消息会带来后台数据的变化,可以为在对客户端执行更新操作下的更新类消息,比如,为用于购买物品的消息、用于领取奖励的消息。

在客户端与服务器建立连接的情况下,在判断第一消息的类型之后,如果判断出第一消息的类型为第一类型时,向服务器发送第一消息和第一序号,该第一序号用于对第一消息进行标识,从而将第一消息与消息队列中的其它消息区分开。可选地,在判断第一消息的类型之后,如果判断出第一消息的类型为第一类型时,向客户端发送用于请求服务器对第一消息进行处理的请求,该请求携带有第一消息和第一序号。

可选地,在客户端向服务器发送第一消息之后,显示出启动消息阻塞的界面,从而避免用户对客户端操作多次。

步骤s206,接收服务器发送的第一响应消息。

在本发明上述步骤s206提供的技术方案中,接收服务器发送的第一响应消息,其中,第一响应消息用于表示服务器已对第一消息进行处理,第一响应消息携带有第一序号。

在向服务器发送第一消息和第一序号之后,服务器对第一消息进行处理,得到第一响应消息。可选地,服务器在接收到第一消息和第一序号之后,判断有没有缓存过第一序号,如果服务器没有缓存过第一序号,则该第一消息是第一次向服务器发送的消息,服务器对第一消息进行处理,得到第一响应消息;如果判断出服务器缓存过第一序号,则该第一消息为在断线重连之后,重新向服务器发送的消息,则服务器直接向客户端发送之前已经对第一消息进行处理得到的第一响应消息。

可选地,服务器在接收到对携带有第一消息和第一序号的请求之后,对该请求进行响应,得到第一响应消息,该第一响应消息也即为服务器对第一消息进行处理得到的回包消息。

上述响应消息用于表示服务器已经对第一消息进行处理,并且携带有第一序号,也即,第一响应消息通过第一序号进行唯一标识。服务器在对第一消息进行处理得到第一响应消息之后,可以对第一响应消息和第一序号进行缓存,也可以通过与后续发送的消息对应的响应消息和对应的序号进行更新。

客户端接收服务器发送的第一响应消息,由于该第一响应消息也携带用于标识第一消息的第一序号,因而客户端可以唯一确认第一响应消息为服务器对第一消息进行处理得到的响应消息,从而确保了客户端和服务器之间发送与接收的数据的一致性,避免了由于网络环境不稳定而导致的客户端与服务器间的数据不一致,进而有利于客户端与服务器之间进行正常的数据通信。

步骤s208,从消息队列中移除第一消息。

在本发明上述步骤s208提供的技术方案中,从消息队列中移除第一消息。

在接收服务器发送的第一响应消息之后,客户端从消息队列中移除第一消息,此时,该消息队列中的第一消息之后的消息才可以发送。

通过上述步骤s202至步骤s208,在本发明实施例中,从消息队列中获取第一消息,其中,消息队列中存储多条待发送消息;当第一消息的类型为第一类型时,向服务器发送第一消息和第一序号,其中,第一序号用于对第一消息进行标识;接收服务器发送的第一响应消息,其中,第一响应消息用于表示服务器已对第一消息进行处理,第一响应消息携带有第一序号;从消息队列中移除第一消息,由于通过给消息队列中的消息添加唯一序号,接收到服务器发送的响应消息中自带对应的序号,这样客户端在处理收到的响应消息便能对其唯一标识,确保了客户端与服务器之间数据的同步,保证了客户端与服务器之间数据的一致性,达到了提高消息处理效率的技术效果,进而解决了相关技术中对消息处理的效率低下的技术问题。

作为一种可选的实施方式,在步骤s204向服务器发送第一消息和第一序号之后、且在步骤s206接收服务器发送的第一响应消息之前,该消息方法还包括:接收到插入到消息队列中的第二消息,其中,第二消息的类型为第二类型;在从消息队列中移除第一消息之后,向服务器发送第二消息。

消息队列中存储的消息可以不断地插入消息。在客户端向服务器发送第一消息和第一序号之后,且在客户端接收服务器发送的第一响应消息之前,接收到消息队列中的第二消息,该第二消息在消息队列中位于第一消息之后。由于第一消息的类型为第一类型,也即,第一消息为阻塞消息,因而第二消息为被第一消息在消息队列中阻塞的消息。第二消息的类型与第一消息的类型不同,可以为消息的普通类型。该第二消息可以为在客户端执行查询操作下的查询类消息,比如,用于拉取玩家等级的消息。

在客户端接收到第一响应消息之后,客户端从消息队列中移除第一消息。在客户端从消息队列中移除第一消息之后,客户端停止对消息队列中的第二消息进行阻塞,向服务器发送上述第二消息。

可选地,在客户端向服务器发送第二消息时,赋予第二消息的序号为大于第二序号。

作为一种可选的实施方式,在向服务器发送第二消息时,该消息处理方法还包括:从消息队列中移除第二消息。

第二类型的消息不会影响后台数据的变化,客户端在向服务器发送第二类型的第二消息时,可以直接从消息队列中移除,从而确保位于消息队列中的第二消息之后的消息可以正常发出,提高消息的处理效率。

作为一种可选的实施方式,向服务器发送第二消息包括:向服务器发送第二消息和用于对第二消息进行标识的第二序号;在向服务器发送第二消息之后,该消息处理方法还包括:接收服务器发送的表示服务器已对第二消息进行处理的第二响应消息,第二响应消息携带有第二序号。

图3是根据本发明实施例的另一种消息处理方法的流程图。如图3所示,该方法还包括以下步骤:

步骤s301,向服务器发送第二消息和第二序号。

在本发明上述步骤s301提供的技术方案中,向服务器发送第二消息和第二序号。

第二消息的类型为消息的普通类型,可以通过预设序号进行标识。在消息队列中位于第一消息之后的第二消息通过第二序号进行标识,第二序号为上述预设序号,比如,第二序号为0。可选地,当消息队列中的消息的序号为0时,可以确定消息的类型为第二类型,也即,确定消息的类型为普通类型。

在从消息队列中移除第一消息之后,向服务器发送第二消息和第二序号。可选地,向客户端发送用于请求服务器对第二消息进行处理的请求,该请求携带有第二消息和第二序号。

步骤s302,接收服务器发送的第二响应消息。

在本发明上述步骤s302提供的技术方案中,接收服务器发送的第二响应消息。

在向服务器发送第二消息和第二序号之后,服务器对第二消息进行处理,得到第二响应消息。可选地,服务器在接收到对携带有第二消息和第二序号的请求之后,对该请求进行响应,得到第二响应消息,该第二响应消息也即为服务器对第二消息进行处理得到的回包消息,服务器直接对第二消息进行处理并返回。上述第二响应消息用于表示服务器已经对第二消息进行处理,并且携带有第二序号,也即,第二响应消息通过第二序号进行唯一标识。

由于第二响应消息也携带用于标识第二消息的第二序号,因而客户端可以唯一确认第二响应消息为服务器对第二消息进行处理得到的响应消息,从而确保了客户端和服务器之间发送与接收的数据的一致性,进而有利于客户端与服务器之间进行正常的数据通信。

该实施例在在从消息队列中移除第一消息之后,向服务器发送第二消息和第二序号,其中,第二序号用于对第二消息进行标识;在向服务器发送第二消息之后,接收服务器发送的第二响应消息,其中,第二响应消息用于表示服务器已对第二消息进行处理,第二响应消息携带有第二序号,从而实现对消息的处理,由于通过给消息队列中的消息添加唯一序号,接收到服务器发送的响应消息中自带对应的序号,这样客户端在处理收到的响应消息便能对其唯一标识,从而保证了客户端与服务器之间数据的一致性,达到了提高消息处理效率的技术效果。

作为一种可选的实施方式,在步骤s202从消息队列中获取第一消息之后,当第一消息的类型为第二类型时,向服务器发送第一消息和第一序号,并从消息队列中移除第一消息;接收服务器发送的第一响应消息。

图4是根据本发明实施例的另一种消息处理方法的流程图。如图4所示,该方法还包括以下步骤:

步骤s401,当第一消息的类型为第二类型时,向服务器发送第一消息和第一序号,并从消息队列中移除第一消息。

在本发明上述步骤s401提供的技术方案中,当第一消息的类型为第二类型时,向服务器发送第一消息和第一序号,并从消息队列中移除第一消息。

消息的类型包括第一类型和第二类型。其中,第一类型可以为阻塞消息类型,第二类型可以为普通消息,在从消息队列中获取第一消息之后,判断第一消息的类型。如果判断出第一消息的类型为第二类型时,也即,第一消息为普通消息,则客户端向服务器发送第一消息和用于对第一消息进行标识的第一序号,并且直接将第一消息从消息队列中移除。

步骤s402,接收服务器发送的第一响应消息。

在本发明上述步骤s402提供的技术方案中,接收服务器发送的第一响应消息。

在向服务器发送第一消息和第一序号且将第一消息从消息队列中直接移除之后,服务器对第一消息进行处理,得到第一响应消息。可选地,服务器在接收到对携带有第一消息和第一序号的请求之后,直接对该请求进行响应,得到第一响应消息。服务器在对第一消息进行处理得到第一响应消息之后,可以不对第一响应消息和第一序号进行缓存。

该实施例在从消息队列中获取第一消息之后,当第一消息的类型为第二类型时,向服务器发送第一消息和第一序号,并从消息队列中移除第一消息;接收服务器发送的第一响应消息,从而实现客户端与服务器之间数据的同步,提高了消息的处理效率。

作为一种可选的实施方式,在步骤s204向服务器发送第一消息和第一序号之后、且在步骤s206接收服务器发送的第一响应消息之前,接收到插入到消息队列中的第三消息,其中,第三消息的类型为第一类型;在从消息队列中移除第一消息之后,该消息处理方法还包括:向服务器发送第三消息和第三序号,其中,第三序号用于对第三消息进行标识,第三序号大于第一序号;接收服务器发送的用于表示服务器已对第三消息进行处理的第三响应消息;从消息队列中移除第三消息。

图5是根据本发明实施例的另一种消息处理方法的流程图。如图5所示,该方法还包括以下步骤:

步骤s501,向服务器发送第三消息和第三序号。

在本发明上述步骤s501提供的技术方案中,向服务器发送第三消息和第三序号,其中,第三序号用于对第三消息进行标识,第三序号大于第一序号。

消息队列中存储的消息可以不断地插入消息。在向服务器发送第一消息和第一序号之后、且在接收服务器发送的第一响应消息之前,接收到消息队列中的第三消息,该第三消息在消息队列中位于第一消息之后,也即,为被第一消息阻塞的消息。第三消息的类型与第一消息的类型相同,为阻塞消息类型,也即,在客户端接收到服务器对第三消息进行响应的响应消息之前,在消息队列中的第三消息之后的消息暂停发送,直到在客户端接收到服务器对第三消息进行响应的响应消息之后,才可以发送消息队列中的第三消息之后的消息,可以为在客户端执行更新操作下的更新类消息,比如,用于购买物品、领取奖励等消息。

在客户端接收到第一响应消息之后,客户端从消息队列中移除第一消息。在客户端从消息队列中移除第一消息之后,客户端停止对消息队列中的第三消息进行阻塞,客户端向服务器发送上述第三消息和用于对第三消息进行标识的第三序号,该第三消息的第三序号大于第一消息的第一序号,也即,第三消息为新的阻塞消息。可选地,向客户端发送用于请求服务器对第三消息进行处理的请求,该请求携带有第三消息和第三序号。

可选地,在客户端向服务器发送第三消息时,赋予第三消息的序号为大于第一序号的第三序号。

步骤s502,接收服务器发送的第三响应消息。

在本发明上述步骤s502提供的技术方案中,接收服务器发送的第三响应消息,其中,第三响应消息用于表示服务器已对第三消息进行处理,第三响应消息携带有第三序号。

在向服务器发送第三消息和第三序号之后,服务器对第三消息进行处理,得到第三响应消息。可选地,服务器在接收到对携带有第三消息和第三序号的请求之后,对该请求进行响应,得到第三响应消息。上述第三响应消息用于表示服务器已经对第三消息进行处理,并且携带有第三序号,也即,第三响应消息通过第三序号进行唯一标识。

由于第三响应消息也携带用于标识第三消息的第三序号,因而客户端可以唯一确认第三响应消息为服务器对第三消息进行处理得到的响应消息,从而确保了客户端和服务器之间发送与接收的数据的一致性,进而有利于客户端与服务器之间进行正常的数据通信。

步骤s503,从消息队列中移除第三消息。

在本发明上述步骤s503提供的技术方案中,从消息队列中移除第三消息。

在接收服务器发送的第三响应消息之后,客户端从消息队列中移除第三消息,此时,该消息队列中的第三消息之后的消息才可以发送。

该实施例通过在向服务器发送第一消息和第一序号之后、且在接收服务器发送的第一响应消息之前,接收到插入到消息队列中的第三消息,其中,第三消息的类型为第一类型;在从消息队列中移除第一消息之后,向服务器发送第三消息和第三序号,其中,第三序号用于对第三消息进行标识,第三序号大于第一序号;接收服务器发送的第三响应消息,其中,第三响应消息用于表示服务器已对第三消息进行处理,第三响应消息携带有第三序号;从消息队列中移除第三消息,由于通过给消息队列中的消息添加唯一序号,接收到服务器发送的响应消息中自带对应的序号,这样客户端在处理收到的响应消息便能对其唯一标识,确保了客户端与服务器之间数据的同步,保证了客户端与服务器之间数据的一致性,达到了提高消息处理效率的技术效果。

作为一种可选的实施方式,在向服务器发送第一消息和第一序号之后、且在接收服务器发送的第一响应消息之前,接收到插入到消息队列中的第四消息,其中,第四消息的类型为第一类型;在从消息队列中移除第一消息之后,向服务器发送第四消息和第四序号,其中,第四序号用于对第四消息进行标识,第四序号等于第一序号;接收服务器发送的已经缓存过的第一响应消息;从消息队列中移除第四消息。

图6是根据本发明实施例的另一种消息处理方法的流程图。如图6所示,该方法还包括以下步骤:

步骤s601,向服务器发送第四消息和第四序号。

在本发明上述步骤s601提供的技术方案中,向服务器发送第四消息和第四序号,其中,第四序号用于对第四消息进行标识,第四序号等于第一序号。

在向服务器发送第一消息和第一序号之后、且在接收服务器发送的第一响应消息之前,接收到插入到消息队列中的第四消息,该第二消息在消息队列中位于第一消息之后。由于第一消息的类型为第一类型,也即,第一消息为阻塞消息,因而第四消息为被第一消息阻塞的消息。第四消息的类型为第一类型,也即,第四消息为阻塞消息。该第四消息可以为在客户端执行更新操作下的更新类消息,比如,用于购买物品、领取奖励等消息。

在客户端接收到第一响应消息之后,客户端从消息队列中移除第一消息。在客户端从消息队列中移除第一消息之后,客户端停止对第四消息的阻塞,向服务器发送上述第四消息和用于对第四消息进行标识的第四序号。

步骤s602,接收服务器发送的已经缓存过的第一响应消息。

在本发明上述步骤s602提供的技术方案中,接收服务器发送的已经缓存过的第一响应消息。

在服务器对第一消息进行处理得到第一响应消息之后,服务器可以对第一响应消息和用于对第一消息进行标识的第一序号进行缓存。在向服务器发送第四消息和第四序号之后,服务器接收第四消息和第四序号。由于第四序号与第一序号相同,则第四消息为在断线重联之后,重新向服务器发送的第一消息,服务器在确定第四消息为在断线重联之后,重新向服务器发送的第一消息之后,不对第四消息进行处理,而是直接返回已经缓存过的对第一消息进行处理得到的第一消息。客户端接收服务器发送的已经缓存过的第一响应消息,从而避免了对重发的消息进行二次处理,提高了消息处理效率。

步骤s603,从消息队列中移除第四消息。

在本发明上述步骤s603提供的技术方案中,从消息队列中移除第四消息。

在接收服务器发送的第一响应消息之后,客户端从消息队列中移除第四消息,此时,该消息队列中的第四消息之后的消息才可以发送。

该实施例在向服务器发送第一消息和第一序号之后、且在接收服务器发送的第一响应消息之前,接收到插入到消息队列中的第四消息,第四消息的类型为第一类型;在从消息队列中移除第一消息之后,向服务器发送第四消息和第四序号,第四序号用于对第四消息进行标识,第四序号等于第一序号;接收服务器发送的已经缓存过的第一响应消息;从消息队列中移除第四消息,从而提高了消息处理的效率。

可选地,当客户端向服务器发送的消息的序号小于服务器缓存的消息的序号,则该消息为过期消息,服务器直接丢弃不做处理。

作为一种可选的实施方式,在向服务器发送第一消息和第一序号之后,判断在向服务器发送第一消息和第一序号之后,未接收到第一响应消息的等待时间是否超过第一预设时间;在等待时间超过第一预设时间的情况下,显示第一提示消息,第一提示消息用于提示继续等待接收第一响应消息;当接收到第一响应消息时,关闭第一提示消息。

图7是根据本发明实施例的另一种消息处理方法的流程图。如图7所示,该方法还包括以下步骤:

步骤s701,判断在向服务器发送第一消息和第一序号之后,未接收到第一响应消息的等待时间是否超过第一预设时间。

在本发明上述步骤s701提供的技术方案中,判断在向服务器发送第一消息和第一序号之后,未接收到第一响应消息的等待时间是否超过第一预设时间。

在网络环境不稳定的情况下,会出现由于网络延迟导致第一响应消息长时间未返回客户端。为了在弱网环境下提高用户体验,需要基于当前网络问题的严重程度给到用户不同的提示反馈,在向服务器发送第一消息和第一序号之后,判断在向服务器发送第一消息和第一序号之后,未接收到第一响应消息的等待时间是否超过第一预设时间。如果判断出等待时间超过第一预设时间,则执行步骤s702。

步骤s702,显示第一提示消息。

在本发明上述步骤s702提供的技术方案中,如果判断出等待时间超过第一预设时间,显示第一提示消息,其中,第一提示消息用于提示继续等待接收第一响应消息。

在判断等待时间是否超过第一预设时间之后,如果判断出等待时间超过第一预设时间,显示第一提示消息,该第一提示消息为客户端的轻度提示,比如,显示“正在连接中……”的提示消息,用于提示用户继续等待接收第一响应消息。

步骤s703,当接收到第一响应消息时,关闭第一提示消息。

在本发明上述步骤s703提供的技术方案中,当接收到第一响应消息时,关闭第一提示消息。

在显示第一提示消息之后,当接收到第一响应消息时,也即,在第一预设时间内接收到第一响应消息,关闭第一提示消息,以尽可能地缩短用户的等待时间。

可选地,第一响应消息在超过第一预设时间未返回客户端可能是因为客户端向服务器发送第一消息的过程中产生丢包情况,或者服务器在向客户端返回第一响应消息的过程中产生丢包情况,该实施例将这种情况视为常态。

该实施例在向服务器发送第一消息和第一序号之后,判断在向服务器发送第一消息和第一序号之后,未接收到第一响应消息的等待时间是否超过第一预设时间;如果判断出等待时间超过第一预设时间,显示第一提示消息,其中,第一提示消息用于提示继续等待接收第一响应消息;当接收到第一响应消息时,关闭第一提示消息,从而根据网络的真实情况,尽可能地缩短用户的等待时间,提高数据处理效率。

作为一种可选的实施方式,在步骤s204,向服务器发送第一消息和第一序号之后,在与服务器断开连接的情况下,自动发送与服务器重新建立连接的第一请求;显示用于提示与服务器重新建立连接的第二提示消息。

图8是根据本发明实施例的另一种消息处理方法的流程图。如图8所示,该方法还包括以下步骤:

步骤s801,在与服务器断开连接的情况下,自动发送与服务器重新建立连接的第一请求。

在本发明上述步骤s801提供的技术方案中,在与服务器断开连接的情况下,自动发送与服务器重新建立连接的第一请求。

在向服务器发送第一消息和第一序号之后,在客户端与服务器断开连接的情况下,客户端内部会尝试断线重连,自动发送与服务器重新建立连接的第一请求,也即,客户端进行自动修复。由于移动环境的不稳定性,网络在3g/4g和wifi来回切换是很常见的情况,因此该实施例将这种情况视为常态。

步骤s802,显示第二提示信息。

在本发明上述步骤s802提供的技术方案中,显示第二提示信息,其中,第二提示信息用于提示与服务器重新建立连接中。

在客户端自动发送与服务器重新建立连接的第一请求之后,客户端显示第二提示消息,该第二提示消息为客户端上的轻度提示,用于提示与服务器重新建立连接中,比如,在客户端上显示“重新建立连接中”。

该实施例在向服务器发送第一消息和第一序号之后,在与服务器断开连接的情况下,自动发送与服务器重新建立连接的第一请求;显示第二提示信息,其中,第二提示信息用于提示与服务器重新建立连接中,以尽可能地缩短用户的等待时间,提高了消息的处理效率。

作为一种可选的实施方式,在步骤s204,向服务器发送第一消息和第一序号之后,在与服务器断开连接的情况下,获取自动与服务器重新建立连接的连接次数;在连接次数大于预设连接次数的情况下,显示第三提示信息,该第三提示信息用于提示与服务器无法建立连接。

图9是根据本发明实施例的另一种消息处理方法的流程图。如图9所示,该方法还包括以下步骤:

步骤s901,在与服务器断开连接的情况下,获取自动与服务器重新建立连接的连接次数。

在本发明上述步骤s901提供的技术方案中,在与服务器断开连接的情况下,获取自动与服务器重新建立连接的连接次数。

客户端与服务器开始建立连接。在与服务器断开连接的情况下,自动发送与服务器重新建立连接的第一请求,请求与服务器建立连接,也即,客户端与服务器自动重连,获取自动与服务器重新建立连接的连接次数。

步骤s902,判断连接次数是否大于预设连接次数。

在本发明上述步骤s902提供的技术方案中,判断连接次数是否大于预设连接次数。

在获取自动与服务器重新建立连接的连接次数之后,判断连接次数是否大于预设连接次数之后,判断连接次数是否大于预设连接次数,该预设连接次数为允许客户端自动与服务器建立连接的最大重连次数。如果判断出连接次数大于预设连接次数,则执行步骤s903。如果判断出连接次数不大于预设连接次数,则自动与服务器重新建立连接。

步骤s903,显示第三提示信息。

在本发明上述步骤s903提供的技术方案中,如果判断出连接次数大于预设连接次数,显示第三提示信息,其中,第三提示信息用于提示与服务器无法建立连接。

在判断出连接次数是否大于预设连接次数之后,如果判断出连接次数大于预设连接次数之后,则此时的网络已经无法完成自动修复,这时显示第三提示消息,该第三提示消息为客户端上的重度提示,用于提示客户端与服务器无法建立连接,比如,在客户端上显示错误提示框“网络异常,是否继续尝试连接”,询问用户是否重新与服务器建立连接,还是重新登录客户端。如果用户对网络进行了手动修复,比如,选择了重新与服务器建立连接,可以避免退出到客户端的登录界面,再重新输入帐号进行登录的繁琐步骤。

该实施例通过在向服务器发送第一消息和第一序号之后,在与服务器断开连接的情况下,获取自动与服务器重新建立连接的连接次数;判断连接次数是否大于预设连接次数;如果判断出连接次数大于预设连接次数,显示第三提示信息,其中,第三提示信息用于提示与服务器无法建立连接,从而明确网络的真实情况,给用户精确的反馈,提升用户体验,也避免了不必要的重连、重新登录而导致的流量浪费的情况发生。

作为一种可选的实施方式,在显示第三提示信息之后,接收第一操作信息,其中,第一操作信息用于触发重新与服务器建立连接;或者接收第二操作信息,其中,第二操作信息用于指示通过重新登录与服务器建立连接。

在显示第三提示信息之后,客户端接收第一操作信息,该第一操作信息可以对网络进行手动修复的操作信息,比如,在显示第三提示信息的界面接收用于重新与服务器建立连接的第一操作信息,从而触发客户端与服务器重新建立连接,可以避免退出到客户端的登录界面,再重新输入帐号进行登录的繁琐步骤。

在显示第三提示信息之后,客户端接收第二操作信息,该第二操作信息可以用于指示通过重新登录与服务器建立连接,从而只有在用户手动选择重新登录时才会进行重新登录的操作,大大降低了由于重登录进行全量数据拉取而导致的流量耗费问题,提升了在网络环境不稳定的情况下的用户体验。

作为一种可选的实施方式,在向服务器发送第一消息和第一序号之前,从应用层连接的初始状态进入连接状态;在与服务器建立连接失败的情况下,进入等待状态;在与服务器成功建立连接的情况下,进入运行状态。

图10是根据本发明实施例的另一种消息处理方法的流程图。如图10所示,该方法还包括以下步骤:

步骤s1001,从应用层连接的初始状态进入连接状态。

在本发明上述步骤s1001提供的技术方案中,从应用层连接的初始状态进入连接状态,其中,连接状态为在与服务器建立连接的状态。

该实施例基于连接状态机的状态管理,状态机用于描述对象内部状态行为和状态间转移的模型。客户端层在传输控制协议(transmissioncontrol,简称为tcp)的链接基础上,封装了一个应用层连接connector,每个connector对应于一个域,比如,在游戏登录场景、游戏大厅场景、游戏战斗场景分别对应一个自己的connector。其中,tcp是一种面向连接的、可靠的、基于字节流的传输层通信协议。需要说明的是,该实施例的connector的生命周期是无视底层tcp是否连接的,即使底层断开又建立条新的连接,该connector也始终不变,每个connector具有一个连接状态机。该状态机的状态包括初始状态(start)、连接状态(connecting)、运行状态(running)、等待状态(waiting)状态和失败状态(fail)。

在向服务器发送第一消息和第一序号之前,从应用层连接的初始状态进入连接状态,初始状态是connector初始化时的状态。当客户端第一次进行连接时,会调用底层tcp连接,并进入connecting状态,该状态不影响界面显示。连接状态用于表示着一次连接中或者重新连接中,取决于它的源状态是初始状态还是其它状态。该状态的作用是枚进入一次,会增加其重连次数,用于后续状态判断是否达到最大的自动重连次数。当与服务器连接失败或者重连失败时,执行步骤s1002。当与服务器连接成功时,执行步骤s1003。

步骤s1002,在与服务器建立连接失败的情况下,进入等待状态。

在本发明上述步骤s1002提供的技术方案中,在与服务器建立连接失败的情况下,进入等待状态,其中,等待状态为用于指示网络出现异常的状态。

在从应用层连接的初始状态进入连接状态之后,在与服务器建立连接失败的情况下,进入等待状态,该等待状态用于标识当前网络出现异常,并且将根据重连计数、连接结果等因素来判断是否该尝试下一次重连,如果尝试进行下一次重连,则进入连接状态,如果已经彻底无发与服务器建立连接了,或者已经达到与服务器进行连接的最大次数,则进入失败状态。

步骤s1003,在与服务器成功建立连接的情况下,进入运行状态。

在本发明上述步骤s1003提供的技术方案中,在与服务器成功建立连接的情况下,进入运行状态,其中,运行状态用于指示与服务器成功建立连接之后的状态。

在从应用层连接的初始状态进入连接状态之后,在与服务器成功建立连接的情况下,进入运行状态,该运行状态用于表示与服务器连接成功之后的状态。在该运行状态下,客户端与服务器将进行正常通信。当与服务器连接超时或者与服务器连接断开的情况下,进入等待状态。

该在向服务器发送第一消息和第一序号之前,从应用层连接的初始状态进入连接状态,其中,连接状态为在与服务器建立连接的状态;在与服务器建立连接失败的情况下,进入等待状态,其中,等待状态为用于指示网络出现异常的状态;在与服务器成功建立连接的情况下,进入运行状态,其中,运行状态用于指示与服务器成功建立连接之后的状态,

作为一种可选的实施方式,在进入等待状态之后,在与服务器重新建立连接的连接次数超过预设次数的情况下,进入连接状态;在连接次数超过预设次数的情况下,进入失败状态。

图11是根据本发明实施例的另一种消息处理方法的流程图。如图11所示,该方法还包括以下步骤:

步骤s1101,判断与服务器重新建立连接的连接次数是否超过预设次数。

在本发明上述步骤s1101提供的技术方案中,判断与服务器重新建立连接的连接次数是否超过预设次数。

等待状态用于表示当前网络出现异常。在进入等待状态之后,判断与服务器重新建立连接的连接次数是否超过预设次数,该预设次数为允许客户端与服务器建立连接的最大次数。如果判断出与服务器重新建立连接的连接次数未超过预设次数,执行步骤s1102;如果判断出与服务器重新建立连接的连接次数超过预设次数,执行步骤s1103。

步骤s1102,进入连接状态。

在本发明上述步骤s1102提供的技术方案中,如果判断出连接次数未超过预设次数,进入连接状态。

在判断与服务器重新建立连接的连接次数是否超过预设次数之后,如果判断出连接次数未超过预设次数,也即,可以尝试进行下一次与服务器建立连接,进入连接状态。

步骤s1103,进入失败状态。

在本发明上述步骤s1103提供的技术方案中,如果判断出连接次数超过预设次数,进入失败状态,其中,失败状态为用于指示无法与服务器建立连接的状态。

在判断与服务器重新建立连接的连接次数是否超过预设次数之后,如果判断出连接次数超过预设次数,则表明当前网络已经彻底无法连接了,进入失败状态,该失败状态表明网络条件已经很差,并且无法在设置的最大重连次数下重连成功。一般的游戏在这种情况下无法正常进行,需要用户手动修复网络。在修复网络指示,可以选择强制断开之前的连接并建立新连接,从而回到状态机的初始状态。

该实施例在进入等待状态之后,判断与服务器重新建立连接的连接次数是否超过预设次数;如果判断出连接次数未超过预设次数,进入连接状态;如果判断出连接次数超过预设次数,进入失败状态,其中,失败状态为用于指示无法与服务器建立连接的状态,实现了对网络状态的细分,以及状态间转移关系来给游戏玩家更精确的反馈,进而满足日益增进的用户需求。

作为一种可选的实施方式,在进入连接状态或进入等待状态时,显示第二提示信息,其中,第二提示信息用于提示与服务器重新建立连接中;在进入失败状态时,显示第三提示信息,其中,第三提示信息用于提示与服务器无法建立连接。

该实施例的客户端可以选择在不同状态下对用户进行不同程度的提示。比如,在连接状态下、等待状态下,采用用于提示与服务器重新建立连接的轻度提示,让用户稍作等待,这个过程中系统进行自动重连,待重连成功后关闭提示。而对于自动重连失败的失败状态,可以显示出错误弹框,来告知用户不宜再进行自动重连,可以尝试手动修复网络,待修复后可以手动选择重连,从而给予用户更精确的状态反馈,提升了客户端在弱网环境下的用户体验,并且节省流量。

根据本发明实施例,还提供了一种消息处理方法的实施例。

可选地,在本实施例中,上述消息处理方法可以应用于如图1所示的由服务器102和终端104所构成的硬件环境中。如图1所示,服务器102通过网络与终端104进行连接,上述网络包括但不限于:广域网、城域网或局域网,终端104并不限定于pc、手机、平板电脑等。本发明实施例的消息处理方法可以由服务器102来执行,也可以由终端104来执行,还可以是由服务器102和终端104共同执行。其中,终端104执行本发明实施例的消息处理方法也可以是由安装在其上的客户端来执行。

图12是根据本发明实施例的另一种消息处理方法的流程图。如图12所示,该方法还包括以下步骤:

步骤s1202,接收消息队列中的第一消息和第一序号。

在本发明上述步骤s1202提供的技术方案中,接收消息队列中的第一消息和第一序号,其中,消息队列中存储多条待发送消息,第一消息的类型为第一类型,第一序号用于对第一消息进行标识。

该实施例的消息队列用于存储客户端向服务器待发的多条消息。在预设网络环境下,服务器接收消息队列中的第一消息和第一序号,该第一消息为插入消息队列中的消息。该预设网络环境可以为网络环境不稳定的网络环境,比如,在2g/3g/4g网络、wifi的频繁切换的网络环境下,可以为移动网络的延迟和波动的网络环境。

消息具有不同的类型,服务器接收第一类型的第一消息,该第一类型的消息在向客户端发送时会阻塞消息队列中位于该第一消息之后的消息,也即,在服务器对第一消息进行响应,并将响应消息发送至客户端之前,暂停发送在消息队列中的第一消息之后的消息,直到在客户端接收到服务器对第一消息进行响应的响应消息之后,才可以发送消息队列中的第一消息之后的消息,该第一类型的第一消息为阻塞消息。

第一消息的第一序号用于对第一消息进行标识,从而将第一消息与消息队列中的其它消息区分开。可选地,服务器接收客户端发送的用于请求服务器对第一消息进行处理的请求,该请求携带有第一消息和第一序号。服务器对该请求进行响应。

步骤s1204,对第一消息进行处理,得到第一响应消息。

在本发明上述步骤s1204提供的技术方案中,对第一消息进行处理,得到第一响应消息,其中,第一响应消息携带有第一序号。

在服务器接收消息队列中的第一消息和第一序号之后,服务器对第一消息进行处理,得到第一响应消息。可选地,服务器在接收到第一消息和第一序号之后,判断有没有缓存过第一序号,如果服务器没有缓存过第一序号,则该第一消息是第一次向服务器发送的消息,服务器对第一消息进行处理,得到第一响应消息;如果判断出服务器缓存过第一序号,则该第一消息为在断线重连之后,服务器重新接收到的消息,则服务器直接向客户端发送之前已经对第一消息进行处理得到的第一响应消息。

可选地,服务器在接收到对携带有第一消息和第一序号的请求之后,对该请求进行响应,得到第一响应消息,该第一响应消息也即为服务器对第一消息进行处理得到的回包消息。

上述响应消息用于表示服务器已经对第一消息进行处理,并且携带有第一序号,也即,第一响应消息通过第一序号进行唯一标识。服务器在对第一消息进行处理得到第一响应消息之后,可以对第一响应消息和第一序号进行缓存,也可以通过与后续发送的消息对应的响应消息和对应的序号进行更新。

步骤s1206,向客户端发送第一响应消息。

在本发明上述步骤s1206提供的技术方案中,向客户端发送第一响应消息,其中,在客户端接收到第一响应消息之后,第一消息移除了消息队列。

在对第一消息进行处理,得到第一响应消息之后,服务器向客户端发送第一响应消息,在客户端接收到第一响应消息之后,第一消息移除了消息队列。由于该第一响应消息也携带用于标识第一消息的第一序号,因而客户端可以唯一确认第一响应消息为服务器对第一消息进行处理得到的响应消息,从而确保了客户端和服务器之间发送与接收的数据的一致性,避免了由于网络环境不稳定而导致的客户端与服务器间的数据不一致,进而有利于客户端与服务器之间进行正常的数据通信。

通过上述步骤s1202至步骤s1206,在本发明实施例中,接收消息队列中的第一消息和第一序号,其中,消息队列中存储多条待发送消息,第一消息的类型为第一类型,第一序号用于对第一消息进行标识;对第一消息进行处理,得到第一响应消息,其中,第一响应消息携带有第一序号;向客户端发送第一响应消息,其中,在客户端接收到第一响应消息之后,第一消息移除了消息队列,由于通过给消息队列中的消息添加唯一序号,接收到服务器发送的响应消息中自带对应的序号,这样客户端在处理收到的响应消息便能对其唯一标识,从而保证客户端与服务器之间数据的一致性,达到了提高消息处理效率的技术效果,进而解决了相关技术中对消息处理的效率低下的技术问题。

作为一种可选的实施方式,在发送第一响应消息之后,接收到插入到消息队列中的第二消息和第二序号,其中,第二消息的类型为第二类型,第二序号用于对第二消息进行标识;对第二消息进行处理,得到第二响应消息,第二响应消息携带有第二序号;发送第二响应消息。

图13是根据本发明实施例的另一种消息处理方法的流程图。如图13所示,该方法还包括以下步骤:

步骤s1301,接收到插入到消息队列中的第二消息和第二序号。

在本发明上述步骤s1301提供的技术方案中,接收到插入到消息队列中的第二消息和第二序号,其中,第二消息的类型为第二类型,第二序号用于对第二消息进行标识。

消息队列中存储的消息可以不断地插入消息。在服务器发送第一响应消息之后,接收到插入到消息队列中的第二消息和第二序号。该第二消息在消息队列中位于第一消息之后。由于第一消息的类型为第一类型,也即,第一消息为阻塞消息,因而第二消息为被第一消息在消息队列中阻塞的消息。第二消息的类型与第一消息的类型不同,可以为消息的普通类型。该第二消息可以为在客户端执行查询操作下的查询类消息,比如,用于拉取玩家等级的消息。

第二消息的类型为消息的普通类型,可以通过预设序号进行标识。第二消息通过第二序号进行标识,第二序号为上述预设序号,比如,第二序号为0。

在客户端从消息队列中移除第一消息之后,服务器接收客户端发送的第二消息和第二序号。可选地,服务器接收客户端发送的用于请求服务器对第二消息进行处理的请求,该请求携带有第二消息和第二序号。

步骤s1302,对第二消息进行处理,得到第二响应消息。

在本发明上述步骤s1302提供的技术方案中,对第二消息进行处理,得到第二响应消息,其中,第二响应消息携带有第二序号。

在服务器接收到插入到消息队列中的第二消息和第二序号之后,服务器对第二消息进行处理,得到第二响应消息。可选地,服务器在接收到对携带有第二消息和第二序号的请求之后,对该请求进行响应,得到第二响应消息,该第二响应消息也即为服务器对第二消息进行处理得到的回包消息,服务器直接对第二消息进行处理并返回。上述第二响应消息用于表示服务器已经对第二消息进行处理,并且携带有第二序号,也即,第二响应消息通过第二序号进行唯一标识。

步骤s1303,发送第二响应消息。

在本发明上述步骤s1303提供的技术方案中,发送第二响应消息。

在服务器对第二消息进行处理,得到第二响应消息之后,服务器发送第二响应消息。由于第二响应消息也携带用于标识第二消息的第二序号,因而客户端可以唯一确认第二响应消息为服务器对第二消息进行处理得到的响应消息,从而确保了客户端和服务器之间发送与接收的数据的一致性,进而有利于客户端与服务器之间进行正常的数据通信。

该实施例在发送第一响应消息之后,接收到插入到消息队列中的第二消息和第二序号,其中,第二消息的类型为第二类型,第二序号用于对第二消息进行标识;对第二消息进行处理,得到第二响应消息,其中,第二响应消息携带有第二序号;发送第二响应消息,由于通过给消息队列中的消息添加唯一序号,接收到服务器发送的响应消息中自带对应的序号,这样客户端在处理收到的响应消息便能对其唯一标识,从而保证了客户端与服务器之间数据的一致性,达到了提高消息处理效率的技术效果。

作为一种可选的实施方式,在发送第一响应消息之后,方法还包括:缓存第一序号和第一响应消息。

在发送第一响应消息之后,服务器缓存第一序号和第一响应消息,当下一次重新接收到第一消息时,可以直接返回缓存的第一响应消息,从而避免了对重现发送的消息进行二次处理,提高了消息处理效率。

作为一种可选的实施方式,在发送第一响应消息之后,接收到插入到消息队列中的第三消息和第三序号,其中,第三消息的类型为第一类型,第三序号用于对第三消息进行标识;在第三序号大于第一序号的情况下,对第三消息进行处理,得到第三响应消息,其中,第三响应消息携带有第三序号;发送第三响应消息。

图14是根据本发明实施例的另一种消息处理方法的流程图。如图14所示,该方法还包括以下步骤:

步骤s1401,接收到插入到消息队列中的第三消息和第三序号。

在本发明上述步骤s1401提供的技术方案中,接收到插入到消息队列中的第三消息和第三序号,其中,第三消息的类型为第一类型,第三序号用于对第三消息进行标识。

消息队列中存储的消息可以不断地插入消息。在发送第一响应消息之后,接收到插入到消息队列中的第三消息和第三序号,该第三消息在消息队列中位于第一消息之后,也即,为被第一消息阻塞的消息。第三消息的类型与第一消息的类型相同,为阻塞消息类型。

在客户端接收到第一响应消息之后,客户端从消息队列中移除第一消息。在客户端从消息队列中移除第一消息之后,客户端停止对消息队列中的第三消息进行阻塞,服务器接收客户端发送的上述第三消息和用于对第三消息进行标识的第三序号。

步骤s1402,判断第三序号是否大于第一序号。

在本发明上述步骤s1402提供的技术方案中,判断第三序号是否大于第一序号。

在服务器接收到插入到消息队列中的第三消息和第三序号之后,服务器判断第三序号是否大于第一序号,如果判断出第三序号大于第一序号,执行步骤s1403。

步骤s1403,对第三消息进行处理,得到第三响应消息。

在本发明上述步骤s1403提供的技术方案中,如果出判断第三序号大于第一序号,对第三消息进行处理,得到第三响应消息,其中,第三响应消息携带有第三序号。

在服务器判断第三序号是否大于第一序号之后,如果出判断第三序号大于第一序号,则第三消息为新的阻塞消息,服务器对第三消息进行处理,得到第三响应消息。可选地,服务器接收客户端发送的用于请求服务器对第三消息进行处理的请求,该请求携带有第三消息和第三序号。

步骤s1404,发送第三响应消息。

在本发明上述步骤s1404提供的技术方案中,发送第三响应消息。

在服务器对第三消息进行处理,得到第三响应消息之后,服务器向客户端发送第三响应消息。

该实施例通过在发送第一响应消息之后,接收到插入到消息队列中的第三消息和第三序号,其中,第三消息的类型为第一类型,第三序号用于对第三消息进行标识;判断第三序号是否大于第一序号;如果出判断第三序号大于第一序号,对第三消息进行处理,得到第三响应消息,其中,第三响应消息携带有第三序号;发送第三响应消息,达到了提高消息处理效率的技术效果。

作为一种可选的实施方式,在发送第三响应消息之后,缓存第三序号和第三响应消息。

在服务器发送第三响应消息之后,服务器将原先缓存的第一序号更新为第三序号,将原先缓存的第一响应消息更新第三响应消息,从而实现对第三序号和第三响应消息的缓存。

作为一种可选的实施方式,在判断第三序号是否大于第一序号之后,如果判断出第三序号等于第一序号,发送第一响应消息。

在判断第三序号是否大于第一序号之后,如果判断出第三序号等于第一序号,则该第三消息是断线重连后重发的消息,那么服务器不对它进行二次处理,而是直接返回缓存的第一响应消息,提高了数据处理效率。

可选地,如果服务器接收到的消息的序号小于上次缓存过的序号,则说明客户端发送的消息为过期的消息,服务器直接丢弃不做任何处理。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例2

下面结合优选的实施例对本发明的技术方案进行说明。

该实施例的消息处理方法基于序号的消息机制,下面分别从客户端侧和从服务器侧对本发明实施例的消息处理方法进行说明。

客户端维护一个消息队列,消息队列中的每条消息可以分为两种类型,包括:阻塞消息和普通消息。其中,阻塞消息在向服务器发送时会将消息队列中该阻塞消息后面的消息阻塞掉,也即,在消息队列中该阻塞消息之后的消息暂暂停发送,直到客户端收到该阻塞消息对应的回包消息时才移除消息队列,并继续发送消息队列中该阻塞消息之后的消息,在此过程中,客户端会驱动消息阻塞界面提示;普通消息是在客户端发送时会被直接移除消息队列。

图15是根据本发明实施例的一种基于客户端的消息发送方法的交互流程图。如图15所示,该方法包括以下步骤:

步骤s1501,客户端接收用户的更新操作。

客户端接收用户的更新操作,该更新操作为购买物品、领取奖励的操作等。

步骤s1502,客户端在消息队列中插入阻塞消息。

更新操作由于会带来后台数据的变化,因而更新操作产生的消息为阻塞消息。

在客户端接收用户的更新操作之后,客户端在消息队列中插入阻塞消息。

步骤s1503,在消息队列中为阻塞消息赋予序号n。

对于阻塞消息,客户端在发送时会赋予其唯一自增的序号,作为其在客户端服务器之间的标识。在客户端插入阻塞消息之后,在消息队列中为阻塞消息赋予序号n。

步骤s1504,在消息队列中向服务器发送阻塞消息和序号n。

客户端在消息队列中为阻塞消息赋予序号n之后,客户端向服务器发送阻塞消息和序号n。

步骤s1505,客户端启动阻塞界面。

在客户端向服务器发送阻塞消息和序号n之后,客户端启动阻塞界面,将消息队列中该阻塞消息后面的消息阻塞掉。

步骤s1506,客户端接收用户的查询操作。

普通消息可以为查询类的请求,比如,普通消息可以为拉取玩家等级;而对于普通消息,序列号都赋为0。

步骤s1507,客户端在消息队列中插入普通消息。

在客户端接收用户的查询操作之后,客户端在消息队列中插入普通消息,该普通消息为被阻塞消息阻塞的消息。

步骤s1508,通过消息队列接收到服务器对阻塞消息的响应消息和序号n。

客户端在消息队列中插入普通消息之后,客户端接收服务器对阻塞消息的响应消息和序号n。

步骤s1509,从消息队列中移除阻塞消息。

在客户端接收到服务器对阻塞消息的响应消息和序号n之后,客户端从消息队列中移除阻塞消息。

步骤s1510,客户端停止阻塞界面。

在客户端从消息队列中移除阻塞消息之后,客户端停止阻塞界面,可以继续发送阻塞消息之后的消息。

步骤s1511,从消息队列中向服务器发送被阻塞的普通消息。

在客户端停止阻塞界面之后,客户端向服务器发送被阻塞的普通消息。

步骤s1512,通过消息队列接收服务器对普通消息的响应消息。

在客户端向服务器发送被阻塞的普通消息之后,服务器对普通消息进行响应,得到普通消息的响应消息,并向客户端发送。

该实施例通过客户端接收用户的更新操作,客户端在消息队列中插入阻塞消息,客户端在消息队列中为阻塞消息赋予序号n,客户端向服务器发送阻塞消息和序号n,客户端启动阻塞界面,客户端接收用户的查询操作,客户端在消息队列中插入普通消息,客户端接收服务器对阻塞消息的响应消息和序号n,客户端从消息队列中移除阻塞消息,客户端停止阻塞界面,客户端向服务器发送被阻塞的普通消息,客户端接收服务器对普通消息的响应消息,由于通过给消息队列中的消息添加唯一序号,接收到服务器发送的响应消息中自带对应的序号,这样客户端在处理收到的响应消息便能对其唯一标识,确保了客户端与服务器之间数据的同步,保证了客户端与服务器之间数据的一致性,达到了提高消息处理效率的技术效果,进而解决了相关技术中对消息处理的效率低下的技术问题。

服务器会记录当前处理过消息中的最高序号,并且缓存最高序号对应的消息的回包内容,其中,回包内容可以为服务器对接收到的消息进行处理得到的响应消息。通过判断每次接收到的消息的序号与上次缓存过的消息的序号的大小关系,确定向客户端发送对接收到的消息的回包内容。

图16是根据本发明实施例的一种基于服务器的消息接收的流程图。如图16所示,该方法包括以下步骤:

步骤s1601,服务器缓存最高序号为seq_latest,对应的回包内容为reply_latest。

消息队列中的消息的序号为递增序号,服务器记录当前处理过消息中最高的序号seq_latest,并且缓存其回包内容reply_latest。

步骤s1602,服务器接收序号为seq_new的新消息。

服务器接收序号为seq_new的新消息,可以接收携带该新消息的阻塞请求。

步骤s1603,服务器判断seq_new与seq_latest的大小。

在服务器接收序号为seq_new的新消息之后,服务器判断seq_new与seq_latest的大小,根据不同的判断结果执行步骤s1604至步骤s1607。

步骤s1604,在服务器判断出seq_new大于seq_latest时,对新消息进行处理,并且更新seq_latest=seq_new,缓存服务器对新消息进行处理得到的新回包内容reply_latest。

在服务器判断出seq_new大于seq_latest时,则是服务器接收到的新的阻塞请求,那么服务器对其进行处理,并更新seq_latest为seq_new,更新reply_latest为该次处理的返回包reply_new。

步骤s1605,在服务器判断出seq_new等于seq_latest时,与新消息相同的消息已经被处理过,返回其缓存内容reply_latest。

在服务器判断出seq_new等于seq_latest时,则服务器接收到的是阻塞请求断线重连后重发的包,服务器不对它进行二次处理,而是直接返回已经缓存过的回包内容reply_lates。

步骤s1606,在服务器判断出seq_new小于seq_latest时,新消息为过期消息,不进行处理。

在服务器判断出seq_new小于seq_latest时,则服务器接收到的消息为过期消息,服务器直接丢弃不做处理(其实在客户端层的消息队列已经保证了不会产生这种情况)。

步骤s1607,在服务器判断出seq_new=0时,新消息为普通消息,直接处理并返回,不更新seq_latest和reply_lates。

在服务器判断出seq_new=0时,则新消息是普通消息,服务器直接对其进行处理并返回,不影响seq_latest和reply_latest。

该实施例的消息队列中的消息的序号为自增序号,通过记录当前处理过的消息中最高序号,以及服务器对最高序号对应的消息进行响应得到的回包内容,判断接收到的新消息的序号与缓存过的最高序号的大小关系,确定向客户端发送对接收到的消息的回包消息,从而实现了服务器对消息的处理,保证了在网络不稳定的情况下,客户端与服务器之间数据的一致性,提高了数据处理效率。

为了在弱网环境下提高游戏玩家的游戏体验,需要基于当前网络问题的严重程度给到用户不同的提示反馈,该实施例提出了基于连接状态机的状态管理。客户端层在tcp的链接基础上,封装了一层connector,每个connector表示着与服务器的一条长连接,比如,大厅建立一个connector,战斗建立一个connector。该connector的生命周期是无视底层tcp连接的断开与否的,即使底层断开又建立一条新的连接,该connector始终不变。每个connector具有一个连接状态机。

图17是根据本发明实施例的一种客户端的连接状态机的示意图。如图17所示,连接状态机的状态包括:初始状态(start)、连接状态(connecting)、运行状态(running)、等待状态(waiting)和失败状态(fail)。

start状态:是connector初始化时的状态。当第一次进行连接时,会调用底层tcp的连接,并进入connecting状态,该状态不影响ui显示。

connecting状态:用于表示客户端第一次连接中或者重新连接中,取决于它的源状态是start还是其它。该状态的作用是每进入一次,会增加其重连计数,用于后续状态判断是否到达最大自动重连次数。当连接失败或者重连失败,都会进入waiting状态;连接成功将进入running状态。

running状态:用于表示客户端连接成功后的状态。该状态下客户端与服务器将进行正常通信。当连接超时或者连接断开时客户端会进入waiting状态。

waiting状态:用于表示网络出现异常,并且该状态将根据重连计数、连接结果等因素来判断是否该尝试下一次重连,如果尝试下一次重连,那么进入connecting状态;如果已经彻底无法建立连接了,或者已经达到了最大重连次数,则进入fail状态。

fail状态:用于表示网络条件很差,并且无法在设置的最大重连次数下重连成功。这种情况一般游戏无法继续进行,需要用户手动修复网络,进行重连,进入connecting状态。在修复网络过后,可以选择强制断开之前的连接并建立新连接,从而回到start状态。

该实施例的客户端可以选择在不同状态下对用户进行不同程度的提示,可以选择在connecting状态、waiting状态下,采用轻度提示,让用户稍作等待,这个过程中系统进行自动重连,待重连成功后关闭提示。而对于自动重连失败的fail状态,该实施例不宜再进行自动重连,而是弹出错误弹框,来告知用户尝试手动修复网络,待修复后可以手动选择重连来继续游戏。

该实施例基于状态细分以及状态间转移关系来给游戏玩家更精确的反馈,对每个连接细分了五个状态,并对其间的状态转移进行了建模,对状态的更精确捕捉可以在网络状态切换时给到用户更精确的反馈,进而提升了用户体验;同时,由于状态机中可以明确区分网络的真实情况,也避免了不必要的重连、重登陆导致的流量浪费问题。

实施例3

本发明实施例的应用环境可以但不限于参照上述实施例中的应用环境,本实施例中对此不再赘述。本发明实施例提供了用于实施上述消息处理方法的一种可选的具体应用。

手游同步机制在弱网下的表现可以由实现的连接状态机所驱动。对于不同的网络状态,该实施例根据其网络问题的严重程度,给予不同的反馈。

图18是根据本发明实施例的一种消息提示的界面示意图。如图18所示,为手游界面,可以由第一即时通讯应用登录,也可以通过第二即时通讯应用登录。由于网络延迟导致数据包长时间未返回的情况,该实施例将其视为常态,只是轻度提示用户即可,比如,“正在联络指挥部…”。在数据包返回的同时关闭掉提示,以尽可能地缩短用户的等待时间。

可选地,在网络处于断开连接的情况下,客户端的内部会尝试断线重连。由于移动环境的不稳定性,网络在3g/4g和wifi来回切换是很常见的情况,因此该实施例将这类情形也视为常态,才采用轻度提示,这种情形下的提示界面也可以为图18所示。

图19是根据本发明实施例的另一种消息提示的界面示意图。如图19所示,在超过客户端允许的最大自动重连次数后,说明此时的网络已经无法自动修复。这时才弹出重度提示,比如,错误提示框“网络异常,是否继续尝试连接”,用户可以操作“取消”按钮以取消连接,或者操作“确定”按钮以确定连接。可选地,询问用户是继续重连还是返回重新登录。如果用户对网络进行了手动修复,可以选择“重连”来避免被踢出到登录界面的繁琐步骤。

实施例4

根据本发明实施例,还提供了一种用于实施上述消息处理方法的消息处理装置。图20是根据本发明实施例的一种消息处理装置的示意图。如图20所示,该装置可以包括:获取单元10、发送单元20、接收单元30和移除单元40。

获取单元10,用于从消息队列中获取第一消息,其中,消息队列中存储多条待发送消息。

发送单元20,用于当第一消息的类型为第一类型时,向服务器发送第一消息和第一序号,其中,第一序号用于对第一消息进行标识。

接收单元30,用于接收服务器发送的第一响应消息,其中,第一响应消息用于表示服务器已对第一消息进行处理,第一响应消息携带有第一序号。

移除单元40,用于从消息队列中移除第一消息。

需要说明的是,该实施例中的获取单元10可以用于执行本申请实施例1中的步骤s202,该实施例中的发送单元20可以用于执行本申请实施例1中的步骤s204,该实施例中的接收单元30可以用于执行本申请实施例1中的步骤s206,该实施例中的移除单元40可以用于执行本申请实施例1中的步骤s208。

图21是根据本发明实施例的另一种消息处理装置的示意图。如图21所示,该装置可以包括:接收单元50、处理单元60和发送单元70。

接收单元50,用于接收消息队列中的第一消息和第一序号,其中,消息队列中存储多条待发送消息,第一消息的类型为第一类型,第一序号用于对第一消息进行标识。

处理单元60,用于对第一消息进行处理,得到第一响应消息,其中,第一响应消息携带有第一序号。

发送单元70,用于向客户端发送第一响应消息,其中,在客户端接收到第一响应消息之后,第一消息移除了消息队列。

需要说明的是,该实施例中的接收单元50可以用于执行本申请实施例1中的步骤s1202,该实施例中的处理单元60可以用于执行本申请实施例1中的步骤s1204,该实施例中的发送单元70可以用于执行本申请实施例1中的步骤s1206。

该实施例通过获取单元10从消息队列中获取第一消息,其中,消息队列中存储多条待发送消息,通过发送单元20当第一消息的类型为第一类型时,向服务器发送第一消息和第一序号,其中,第一序号用于对第一消息进行标识,通过接收单元30接收服务器发送的第一响应消息,其中,第一响应消息用于表示服务器已对第一消息进行处理,第一响应消息携带有第一序号,通过移除单元40从消息队列中移除第一消息,由于通过给消息队列中的消息添加唯一序号,接收到服务器发送的响应消息中自带对应的序号,这样客户端在处理收到的响应消息便能对其唯一标识,从而保证客户端与服务器之间数据的一致性,达到了提高消息处理效率的技术效果,进而解决了相关技术中对消息处理的效率低下的技术问题。

此处需要说明的是,上述单元与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述单元作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。

实施例5

根据本发明实施例,还提供了一种用于实施上述消息处理方法的服务器或终端。

图22是根据本发明实施例的一种终端的结构框图。如图22所示,该终端可以包括:一个或多个(图中仅示出一个)处理器221、存储器223、以及传输装置225,如图22所示,该终端还可以包括输入输出设备227。

其中,存储器223可用于存储软件程序以及模块,如本发明实施例中的消息处理方法和装置对应的程序指令/模块,处理器221通过运行存储在存储器223内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的消息处理方法。存储器223可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器223可进一步包括相对于处理器221远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

上述的传输装置225用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置225包括一个网络适配器(networkinterfacecontroller,nic),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置225为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。

其中,具体地,存储器223用于存储应用程序。

处理器221可以通过传输装置225调用存储器223存储的应用程序,以执行下述步骤:

从消息队列中获取第一消息,其中,消息队列中存储多条待发送消息;

当第一消息的类型为第一类型时,向服务器发送第一消息和第一序号,其中,第一序号用于对第一消息进行标识;

接收服务器发送的第一响应消息,其中,第一响应消息用于表示服务器已对第一消息进行处理,第一响应消息携带有第一序号;

从消息队列中移除第一消息。

处理器221还用于执行下述步骤:在向服务器发送第一消息和第一序号之后、且在接收服务器发送的第一响应消息之前,接收到插入到消息队列中的第二消息,其中,第二消息的类型为第二类型;在从消息队列中移除第一消息之后,向服务器发送第二消息。

处理器221还用于执行下述步骤:在向服务器发送第二消息时,从消息队列中移除第二消息。

处理器221还用于执行下述步骤:向服务器发送第二消息和第二序号,其中,第二序号用于对第二消息进行标识;在向服务器发送第二消息之后,接收服务器发送的第二响应消息,其中,第二响应消息用于表示服务器已对第二消息进行处理,第二响应消息携带有第二序号。

处理器221还用于执行下述步骤:在从消息队列中获取第一消息之后,当第一消息的类型为第二类型时,向服务器发送第一消息和第一序号,并从消息队列中移除第一消息;接收服务器发送的第一响应消息。

处理器221还用于执行下述步骤:在向服务器发送第一消息和第一序号之后、且在接收服务器发送的第一响应消息之前,接收到插入到消息队列中的第三消息,其中,第三消息的类型为第一类型;在从消息队列中移除第一消息之后,向服务器发送第三消息和第三序号,其中,第三序号用于对第三消息进行标识,第三序号大于第一序号;接收服务器发送的第三响应消息,其中,第三响应消息用于表示服务器已对第三消息进行处理,第三响应消息携带有第三序号;从消息队列中移除第三消息。

处理器221还用于执行下述步骤:在向服务器发送第一消息和第一序号之后、且在接收服务器发送的第一响应消息之前,接收到插入到消息队列中的第四消息,其中,第四消息的类型为第一类型;在从消息队列中移除第一消息之后,向服务器发送第四消息和第四序号,其中,第四序号用于对第四消息进行标识,第四序号等于第一序号;接收服务器发送的已经缓存过的第一响应消息;从消息队列中移除第四消息。

处理器221还用于执行下述步骤:在向服务器发送第一消息和第一序号之后,判断在向服务器发送第一消息和第一序号之后,未接收到第一响应消息的等待时间是否超过第一预设时间;如果判断出等待时间超过第一预设时间,显示第一提示消息,其中,第一提示消息用于提示继续等待接收第一响应消息;当接收到第一响应消息时,关闭第一提示消息。

处理器221还用于执行下述步骤:在向服务器发送第一消息和第一序号之后,在与服务器断开连接的情况下,自动发送与服务器重新建立连接的第一请求;显示第二提示信息,其中,第二提示信息用于提示与服务器重新建立连接中。

处理器221还用于执行下述步骤:在向服务器发送第一消息和第一序号之后,在与服务器断开连接的情况下,获取自动与服务器重新建立连接的连接次数;判断连接次数是否大于预设连接次数;如果判断出连接次数大于预设连接次数,显示第三提示信息,其中,第三提示信息用于提示与服务器无法建立连接。

处理器221还用于执行下述步骤:在显示第三提示信息之后,接收第一操作信息,其中,第一操作信息用于触发重新与服务器建立连接;或者接收第二操作信息,其中,第二操作信息用于指示通过重新登录与服务器建立连接。

处理器221还用于执行下述步骤:在向服务器发送第一消息和第一序号之前,从应用层连接的初始状态进入连接状态,其中,连接状态为在与服务器建立连接的状态;在与服务器建立连接失败的情况下,进入等待状态,其中,等待状态为用于指示网络出现异常的状态;在与服务器成功建立连接的情况下,进入运行状态,其中,运行状态用于指示与服务器成功建立连接之后的状态。

处理器221还用于执行下述步骤:在进入等待状态之后,判断与服务器重新建立连接的连接次数是否超过预设次数;如果判断出连接次数未超过预设次数,进入连接状态;如果判断出连接次数超过预设次数,进入失败状态,其中,失败状态为用于指示无法与服务器建立连接的状态。

处理器221还用于执行下述步骤:在进入连接状态或进入等待状态时,显示第二提示信息,其中,第二提示信息用于提示与服务器重新建立连接中;在进入失败状态时,显示第三提示信息,其中,第三提示信息用于提示与服务器无法建立连接。

可选地,处理器221还可以通过传输装置225调用存储器223存储的应用程序,以执行下述步骤:

接收消息队列中的第一消息和第一序号,其中,消息队列中存储多条待发送消息,第一消息的类型为第一类型,第一序号用于对第一消息进行标识;

对第一消息进行处理,得到第一响应消息,其中,第一响应消息携带有第一序号;

向客户端发送第一响应消息,其中,在客户端接收到第一响应消息之后,第一消息移除了消息队列。

处理器221还用于执行下述步骤:在发送第一响应消息之后,方法还包括:接收到插入到消息队列中的第二消息和第二序号,其中,第二消息的类型为第二类型,第二序号用于对第二消息进行标识;对第二消息进行处理,得到第二响应消息,其中,第二响应消息携带有第二序号;发送第二响应消息。

处理器221还用于执行下述步骤:在发送第一响应消息之后,缓存第一序号和第一响应消息。

处理器221还用于执行下述步骤:在发送第一响应消息之后,接收到插入到消息队列中的第三消息和第三序号,其中,第三消息的类型为第一类型,第三序号用于对第三消息进行标识;判断第三序号是否大于第一序号;如果出判断第三序号大于第一序号,对第三消息进行处理,得到第三响应消息,其中,第三响应消息携带有第三序号;发送第三响应消息。

处理器221还用于执行下述步骤:在发送第三响应消息之后,缓存第三序号和第三响应消息。

处理器221还用于执行下述步骤:在判断第三序号是否大于第一序号之后,如果判断出第三序号等于第一序号,发送第一响应消息。

采用本发明实施例,提供了一种消息处理方案,从消息队列中获取第一消息,其中,消息队列中存储多条待发送消息;当第一消息的类型为第一类型时,向服务器发送第一消息和第一序号,其中,第一序号用于对第一消息进行标识;接收服务器发送的第一响应消息,其中,第一响应消息用于表示服务器已对第一消息进行处理,第一响应消息携带有第一序号;从消息队列中移除第一消息,由于通过给消息队列中的消息添加唯一序号,接收到服务器发送的响应消息中自带对应的序号,这样客户端在处理收到的响应消息便能对其唯一标识,从而保证客户端与服务器之间数据的一致性,达到了提高消息处理效率的技术效果,进而解决了相关技术中对消息处理的效率低下的技术问题。

可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。

本领域普通技术人员可以理解,图22所示的结构仅为示意,终端可以是智能手机(如android手机、ios手机等)、平板电脑、掌上电脑以及移动互联网设备(mobileinternetdevices,mid)、pad等终端设备。图22其并不对上述电子装置的结构造成限定。例如,终端还可包括比图22中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图22所示不同的配置。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(read-onlymemory,rom)、随机存取器(randomaccessmemory,ram)、磁盘或光盘等。

实施例6

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行消息处理方法的程序代码。

可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:

从消息队列中获取第一消息,其中,消息队列中存储多条待发送消息;

当第一消息的类型为第一类型时,向服务器发送第一消息和第一序号,其中,第一序号用于对第一消息进行标识;

接收服务器发送的第一响应消息,其中,第一响应消息用于表示服务器已对第一消息进行处理,第一响应消息携带有第一序号;

从消息队列中移除第一消息。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在向服务器发送第一消息和第一序号之后、且在接收服务器发送的第一响应消息之前,接收到插入到消息队列中的第二消息,其中,第二消息的类型为第二类型;在从消息队列中移除第一消息之后,向服务器发送第二消息。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在向服务器发送第二消息时,从消息队列中移除第二消息。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:向服务器发送第二消息和第二序号,其中,第二序号用于对第二消息进行标识;在向服务器发送第二消息之后,接收服务器发送的第二响应消息,其中,第二响应消息用于表示服务器已对第二消息进行处理,第二响应消息携带有第二序号。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在从消息队列中获取第一消息之后,当第一消息的类型为第二类型时,向服务器发送第一消息和第一序号,并从消息队列中移除第一消息;接收服务器发送的第一响应消息。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在向服务器发送第一消息和第一序号之后、且在接收服务器发送的第一响应消息之前,接收到插入到消息队列中的第三消息,其中,第三消息的类型为第一类型;在从消息队列中移除第一消息之后,向服务器发送第三消息和第三序号,其中,第三序号用于对第三消息进行标识,第三序号大于第一序号;接收服务器发送的第三响应消息,其中,第三响应消息用于表示服务器已对第三消息进行处理,第三响应消息携带有第三序号;从消息队列中移除第三消息。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在向服务器发送第一消息和第一序号之后、且在接收服务器发送的第一响应消息之前,接收到插入到消息队列中的第四消息,其中,第四消息的类型为第一类型;在从消息队列中移除第一消息之后,向服务器发送第四消息和第四序号,其中,第四序号用于对第四消息进行标识,第四序号等于第一序号;接收服务器发送的已经缓存过的第一响应消息;从消息队列中移除第四消息。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在向服务器发送第一消息和第一序号之后,判断在向服务器发送第一消息和第一序号之后,未接收到第一响应消息的等待时间是否超过第一预设时间;如果判断出等待时间超过第一预设时间,显示第一提示消息,其中,第一提示消息用于提示继续等待接收第一响应消息;当接收到第一响应消息时,关闭第一提示消息。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在向服务器发送第一消息和第一序号之后,在与服务器断开连接的情况下,自动发送与服务器重新建立连接的第一请求;显示第二提示信息,其中,第二提示信息用于提示与服务器重新建立连接中。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在向服务器发送第一消息和第一序号之后,在与服务器断开连接的情况下,获取自动与服务器重新建立连接的连接次数;判断连接次数是否大于预设连接次数;如果判断出连接次数大于预设连接次数,显示第三提示信息,其中,第三提示信息用于提示与服务器无法建立连接。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在显示第三提示信息之后,接收第一操作信息,其中,第一操作信息用于触发重新与服务器建立连接;或者接收第二操作信息,其中,第二操作信息用于指示通过重新登录与服务器建立连接。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在向服务器发送第一消息和第一序号之前,从应用层连接的初始状态进入连接状态,其中,连接状态为在与服务器建立连接的状态;在与服务器建立连接失败的情况下,进入等待状态,其中,等待状态为用于指示网络出现异常的状态;在与服务器成功建立连接的情况下,进入运行状态,其中,运行状态用于指示与服务器成功建立连接之后的状态。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在进入等待状态之后,判断与服务器重新建立连接的连接次数是否超过预设次数;如果判断出连接次数未超过预设次数,进入连接状态;如果判断出连接次数超过预设次数,进入失败状态,其中,失败状态为用于指示无法与服务器建立连接的状态。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在进入连接状态或进入等待状态时,显示第二提示信息,其中,第二提示信息用于提示与服务器重新建立连接中;在进入失败状态时,显示第三提示信息,其中,第三提示信息用于提示与服务器无法建立连接。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:

接收消息队列中的第一消息和第一序号,其中,消息队列中存储多条待发送消息,第一消息的类型为第一类型,第一序号用于对第一消息进行标识;

对第一消息进行处理,得到第一响应消息,其中,第一响应消息携带有第一序号;

向客户端发送第一响应消息,其中,在客户端接收到第一响应消息之后,第一消息移除了消息队列。

在发送第一响应消息之后,方法还包括:接收到插入到消息队列中的第二消息和第二序号,其中,第二消息的类型为第二类型,第二序号用于对第二消息进行标识;对第二消息进行处理,得到第二响应消息,其中,第二响应消息携带有第二序号;发送第二响应消息。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在发送第一响应消息之后,缓存第一序号和第一响应消息。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在发送第一响应消息之后,接收到插入到消息队列中的第三消息和第三序号,其中,第三消息的类型为第一类型,第三序号用于对第三消息进行标识;判断第三序号是否大于第一序号;如果出判断第三序号大于第一序号,对第三消息进行处理,得到第三响应消息,其中,第三响应消息携带有第三序号;发送第三响应消息。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在发送第三响应消息之后,缓存第三序号和第三响应消息。

可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:在判断第三序号是否大于第一序号之后,如果判断出第三序号等于第一序号,发送第一响应消息。

可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

上述本发明实施例序号仅仅为了描述,不表示实施例的优劣。

上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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