消息处理方法、装置、设备和存储介质

文档序号:1233672 发布日期:2020-09-11 浏览:27次 >En<

阅读说明:本技术 消息处理方法、装置、设备和存储介质 (Message processing method, device, equipment and storage medium ) 是由 沈武魁 于 2020-05-29 设计创作,主要内容包括:本发明实施例公开了一种消息处理方法、装置、设备和存储介质。该方法包括:获取由设定游戏服务端生成的待处理的异步消息;若检测到用户离线,则按照预设消息存储结构,封装所述异步消息,生成离线存储消息;将所述离线存储消息存储至数据库,所述离线存储消息用于在所述用户重新登录的情况下发送至所述用户对应的游戏客户端。通过上述技术方案,更加合理地处理游戏中的异步消息,降低了异步消息的丢失率。(The embodiment of the invention discloses a message processing method, a message processing device, message processing equipment and a storage medium. The method comprises the following steps: acquiring asynchronous messages to be processed generated by a set game server; if the user is detected to be offline, the asynchronous message is packaged according to a preset message storage structure, and an offline storage message is generated; and storing the offline storage message to a database, wherein the offline storage message is used for being sent to a game client corresponding to the user under the condition that the user logs in again. By the technical scheme, the asynchronous messages in the game are processed more reasonably, and the loss rate of the asynchronous messages is reduced.)

消息处理方法、装置、设备和存储介质

技术领域

本发明实施例涉及计算机技术,尤其涉及一种消息处理方法、装置、设备和存储介质。

背景技术

在网络游戏中,存在不同服务器之间的异步处理的消息,这些异步处理的消息需要返回至主服务器,再通过主服务器与客户端通信,以便客户端能够接收并处理该类消息。

如果玩家在游戏过程中突然掉线,那么玩家与主服务器之间的连接会被同时销毁。这样,当异步处理的消息返回时,由于玩家与主服务器之间的连接已中断,这些消息会被丢弃,而不能被正常处理。

上述处理异步处理的消息的方式,容易使得客户端丢失一些重要的消息,如通关结算消息等,极大地影响玩家游戏体验。

发明内容

本发明实施例提供一种消息处理方法、装置、设备和存储介质,以实现更加合理地处理游戏中的异步消息,降低异步消息的丢失率。

第一方面,本发明实施例提供了一种消息处理方法,包括:

获取由设定游戏服务端生成的待处理的异步消息;

若检测到用户离线,则按照预设消息存储结构,封装所述异步消息,生成离线存储消息;

将所述离线存储消息存储至数据库,所述离线存储消息用于在所述用户重新登录的情况下发送至所述用户对应的游戏客户端。

第二方面,本发明实施例还提供了一种消息处理装置,该装置包括:

异步消息获取模块,用于获取由设定游戏服务端生成的待处理的异步消息;

离线存储消息生成模块,用于若检测到用户离线,则按照预设消息存储结构,封装所述异步消息,生成离线存储消息;

消息存储模块,用于将所述离线存储消息存储至数据库,所述离线存储消息用于在所述用户重新登录的情况下发送至所述用户对应的游戏客户端。

第三方面,本发明实施例还提供了一种电子设备,该电子设备包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所提供的消息处理方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明任意实施例所提供的消息处理方法。

本发明实施例通过获取由设定游戏服务端生成的待处理的异步消息;若检测到用户离线,则按照预设消息存储结构,封装异步消息,生成离线存储消息;将离线存储消息存储至数据库,离线存储消息用于在用户重新登录的情况下发送至用户对应的游戏客户端。实现了在用户离线时,将游戏主服务端之外的其他游戏服务端发送给游戏主服务端的异步消息封装,并存储至主服务端的数据库中,以便用户重新登录的情况下正常接收并处理该异步消息,解决了用户离线时直接丢弃异步消息造成的重要消息丢失的问题,达到了更加合理地处理游戏中的异步消息,降低异步消息丢失率,提升用户游戏体验的技术效果。

附图说明

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

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

图3是本发明实施例三中的一种消息处理装置的结构示意图;

图4是本发明实施例四中的一种电子设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

本实施例提供的消息处理方法,可适用于网络游戏中用户(即玩家)离线的情况下对异步处理的消息的处理。该方法可以由消息处理装置来执行,该装置可以由软件和/或硬件的方式实现,该装置可以集成在游戏主服务端对应的电子设备中,例如台式电脑、服务器、超级计算机或服务器集群等。参见图1,本实施例的方法具体包括:

S110、获取由设定游戏服务端生成的待处理的异步消息。

其中,设定游戏服务端是指除游戏主服务端之外的其他游戏服务端,例如可以是消费时所在的商场服务端、游戏场景跳转后的游戏副本服务端等。游戏主服务端用于验证用户登录及运行游戏主场景等。

具体地,如果玩家在游戏过程中跳转至游戏商场购买道具和装备等游戏用品,或者跳转至其他游戏场景,后台会从主服务端跳转至商场服务端或者游戏副本服务端等设定游戏服务端。用户的操作会使设定游戏服务端生成一些消息,这些消息须返回至主服务端进行处理,这些由设定游戏服务端生成并返回的消息称为主服务端的异步消息。具体实施时,主服务端会接收从设定游戏服务端返回的待处理的异步消息。

S120、若检测到用户离线,则按照预设消息存储结构,封装异步消息,生成离线存储消息。

其中,预设消息存储结构是预先设定的、统一存储各种消息类型的异步消息的存储结构。离线存储消息是指用户离线时,存储在主服务端中的异步消息。

具体地,主服务端接收到设定游戏服务端发送的异步消息之后,先检测该异步消息对应的用户是否在线,例如,检测游戏客户端与主服务端之间的连接是否正常通信。如果检测到用户在线,那么按照正常的消息处理逻辑处理该异步消息。如果检测到用户不在线,即离线,那么就将异步消息的消息存储结构转换为预设消息存储结构,实现对异步消息的封装,获得封装后的异步消息,即离线存储消息。

示例性地,按照预设消息存储结构,封装异步消息,生成离线存储消息包括:按照预设消息存储结构,将异步消息解析为用户标识、消息类型和消息内容;基于预设序列化方式,依据用户标识、消息类型和消息内容,生成异步消息对应的序列化数据,作为离线存储消息。

其中,用户标识是指用户的表征信息,其可以唯一区分一个用户,例如可以是用户账号或用户的全局唯一的编号等。消息类型是指消息所属的类别,不同消息类型的消息具有不同的数据存储结构。预设序列化方式是指预先设定的数据序列化方式,例如可以是JSON、XML或ProtoBuf等序列化方式。

具体地,为了将不同类型的异步消息统一存储至数据库中,主服务端按照序列化存储的思路,设计预设消息存储结构。考虑到异步消息后续发送至游戏客户端时,需要区分用户,故预设消息存储结构中需包含用户标识(User Identification,UID)。并且,将序列化后的异步消息(即序列化数据)发送给游戏客户端前,需要将其重构为原本的异步消息,所以预设消息存储结构中还需包含该异步消息的消息类型。基于此,先解析异步消息,获得用户标识、消息类型和消息内容。然后,采用预设序列化方式,将用户标识、消息类型和消息内容存储为序列化数据,生成离线存储消息。

S130、将离线存储消息存储至数据库,离线存储消息用于在用户重新登录的情况下发送至用户对应的游戏客户端。

具体地,主服务端将离线存储消息存储至其数据库中,避免其可能的长时间占用主服务端的缓存空间,确保主服务端的运行效率。在用户重新登录主服务器后,便可从数据库中获取该离线存储消息,并将其发送至用户对应的游戏客户端。

本实施例的技术方案,通过获取由设定游戏服务端生成的待处理的异步消息;若检测到用户离线,则按照预设消息存储结构,封装异步消息,生成离线存储消息;将离线存储消息存储至数据库,离线存储消息用于在用户重新登录的情况下发送至用户对应的游戏客户端。实现了在用户离线时,将游戏主服务端之外的其他游戏服务端发送给游戏主服务端的异步消息封装,并存储至主服务端的数据库中,以便用户重新登录的情况下正常接收并处理该异步消息,解决了用户离线时直接丢弃异步消息造成的重要消息丢失的问题,达到了更加合理地处理游戏中的异步消息,降低异步消息丢失率,提升用户游戏体验的技术效果。

实施例二

本实施例在上述实施例一的基础上,增加了异步消息的消息类型判断的相关步骤。在此基础上,进一步增加了“将离线存储消息对应的异步消息发送至游戏客户端”的相关步骤。其中,与上述各实施例相同或相应的术语的解释在此不再赘述。参见图2,本实施例提供的消息处理方法包括:

S210、获取由设定游戏服务端生成的待处理的异步消息。

S220、若检测到用户离线,则依据异步消息的消息类型和设定消息类型,确定异步消息是否为待存储的异步消息。

其中,设定消息类型是指预先设定的消息类型,其是相对于业务而言较为重要的消息类型。示例性地,设定消息类型包括关卡完结处理消息类型和物品获取消息类型。关卡完结处理消息类型是指用户结束一个关卡后的结算消息类型,例如奖励消息类型,该类消息的消息内容可以是奖励的装备或金币等。物品获取消息类型是指用户从游戏商场中购买物品的相关消息的类型,例如订单消息类型,该类消息的消息内容可以是购买物品的物品标识和数量等。这样设置的好处在于,能够确保结算类和订单类的异步消息被存储,确保用户利益不受损,提高用户体验。

具体地,主服务端在判断用户离线时,并不是把所有离线消息都存储至数据库,而是先将接收到的异步消息的消息类型与预设消息类型匹配。如果匹配一致,则该异步消息需要存储,后续执行S230及其后续步骤;如果匹配不一致,则该异步消息丢弃,结束消息处理流程。

S230、按照预设消息存储结构,将异步消息解析为用户标识、消息类型和消息内容。

S240、基于预设序列化方式,依据用户标识、消息类型和消息内容,生成异步消息对应的序列化数据,作为离线存储消息。

S250、将离线存储消息存储至数据库。

S260、若检测到用户的登录操作,则将离线存储消息对应的异步消息发送至游戏客户端,以使游戏客户端处理异步消息。

具体地,如果主服务端检测到用户的登录操作,如登录请求或者登录建立连接的消息,则确定该用户重新登录游戏。此时,主服务端需要获取离线存储消息,并将其转换为异步消息,然后将该异步消息发送至该用户对应的游戏客户端。游戏客户端收到该异步消息后,进行相应的消息处理。

示例性地,将离线存储消息对应的异步消息发送至游戏客户端包括:依据登录操作中的用户标识,从数据库中查询用户标识对应的离线存储消息;基于预设序列化方式对应的反序列化方式,将离线存储消息转换为异步消息,并将异步消息发送至游戏客户端。

具体地,主服务端根据登录操作中的用户标识,对数据库中的离线存储消息进行检索,判断是否有该用户对应的至少一个离线存储消息。如果没有,则结束该消息处理流程。如果有,那么根据预设序列化方式对应的反序列化方式,将每个离线存储消息重构为相应的异步消息,并将所有的异步消息发送至游戏客户端。

其中,基于预设序列化方式对应的反序列化方式,将离线存储消息转换为异步消息包括:基于反序列化方式,依据离线存储消息中的消息类型,将用户标识、消息类型和消息内容重构为异步消息。具体地,针对每一个离线存储消息,采用反序列化方式,将用户标识、消息类型和消息内容,按照离线存储消息中的消息类型对应的数据结构进行数据重构,获得该离线存储消息对应的异步消息。这样设置的好处在于,能够更好地还原异步消息,进一步减少游戏客户端对异步消息的额外处理,兼容原有的异步消息处理流程。

本实施例的技术方案,通过依据异步消息的消息类型和设定消息类型,确定异步消息是否为待存储的异步消息。实现了重要的异步消息的筛选,能够针对业务中比较重要的异步消息进行封装和存储,而丢弃不重要的异步消息,提高异步消息的处理效率。通过若检测到用户的登录操作,则将离线存储消息对应的异步消息发送至游戏客户端,以使游戏客户端处理异步消息。实现了在用户重新登录的情况下,将主服务端数据库中该用户对应的所有离线存储消息重构为原本的异步消息,再发送至游戏客户端,既能兼容游戏客户端中对异步消息的原有处理流程,又能将所有存储的异步消息发送至游戏客户端,进一步提高异步消息处理的合理性和处理效率。

实施例三

本实施例提供一种消息处理装置,参见图3,该装置具体包括:

异步消息获取模块310,用于获取由设定游戏服务端生成的待处理的异步消息;

离线存储消息生成模块320,用于若检测到用户离线,则按照预设消息存储结构,封装异步消息,生成离线存储消息;

消息存储模块330,用于将离线存储消息存储至数据库,离线存储消息用于在用户重新登录的情况下发送至用户对应的游戏客户端。

可选地,在上述装置的基础上,该装置还包括消息类型判定模块,用于:

在按照预设消息存储结构,封装异步消息,生成离线存储消息之前,依据异步消息的消息类型和设定消息类型,确定异步消息是否为待存储的异步消息;

若是,则执行按照预设消息存储结构,封装异步消息,生成离线存储消息的步骤。

其中,设定消息类型包括关卡完结处理消息类型和物品获取消息类型。

可选地,离线存储消息生成模块320具体用于:

按照预设消息存储结构,将异步消息解析为用户标识、消息类型和消息内容;

基于预设序列化方式,依据用户标识、消息类型和消息内容,生成异步消息对应的序列化数据,作为离线存储消息。

可选地,在上述装置的基础上,该装置还包括异步消息发送模块,用于:

在将离线存储消息存储至数据库之后,若检测到用户的登录操作,则将离线存储消息对应的异步消息发送至游戏客户端,以使游戏客户端处理异步消息。

进一步地,异步消息发送模块具体用于:

依据登录操作中的用户标识,从数据库中查询用户标识对应的离线存储消息;

基于预设序列化方式对应的反序列化方式,将离线存储消息转换为异步消息,并将异步消息发送至游戏客户端。

进一步地,异步消息发送模块具体用于:

基于反序列化方式,依据离线存储消息中的消息类型,将用户标识、消息类型和消息内容重构为异步消息。

通过本发明实施例三的一种消息处理装置,实现了在用户离线时,将游戏主服务端之外的其他游戏服务端发送给游戏主服务端的异步消息封装,并存储至主服务端的数据库中,以便用户重新登录的情况下正常接收并处理该异步消息,解决了用户离线时直接丢弃异步消息造成的重要消息丢失的问题,达到了更加合理地处理游戏中的异步消息,降低异步消息丢失率,提升用户游戏体验的技术效果。

本发明实施例所提供的消息处理装置可执行本发明任意实施例所提供的消息处理方法,具备执行方法相应的功能模块和有益效果。

值得注意的是,上述消息处理装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

实施例四

参见图4,本实施例提供了一种电子设备400,其包括:一个或多个处理器420;存储装置410,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器420执行,使得一个或多个处理器420实现本发明实施例所提供的消息处理方法,包括:

获取由设定游戏服务端生成的待处理的异步消息;

若检测到用户离线,则按照预设消息存储结构,封装异步消息,生成离线存储消息;

将离线存储消息存储至数据库,离线存储消息用于在用户重新登录的情况下发送至用户对应的游戏客户端。

当然,本领域技术人员可以理解,处理器420还可以实现本发明任意实施例所提供的消息处理方法的技术方案。

图4显示的电子设备400仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图4所示,电子设备400以通用计算设备的形式表现。电子设备400的组件可以包括但不限于:一个或者多个处理器420,存储装置410,连接不同系统组件(包括存储装置410和处理器420)的总线450。

总线450表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,***总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及***组件互连(PCI)总线。

电子设备400典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备400访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

存储装置410可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)411和/或高速缓存存储器412。电子设备400可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统413可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线450相连。存储装置410可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。

具有一组(至少一个)程序模块415的程序/实用工具414,可以存储在例如存储装置410中,这样的程序模块415包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块415通常执行本发明所描述的任意实施例中的功能和/或方法。

电子设备400也可以与一个或多个外部设备460(例如键盘、指向设备、显示器470等)通信,还可与一个或者多个使得用户能与该电子设备400交互的设备通信,和/或与使得该电子设备400能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出接口(I/O接口)430进行。并且,电子设备400还可以通过网络适配器440与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图4所示,网络适配器440通过总线450与电子设备400的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备400使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

处理器420通过运行存储在存储装置410中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的消息处理方法。

实施例五

本实施例提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行一种消息处理方法,该方法包括:

获取由设定游戏服务端生成的待处理的异步消息;

若检测到用户离线,则按照预设消息存储结构,封装异步消息,生成离线存储消息;

将离线存储消息存储至数据库,离线存储消息用于在用户重新登录的情况下发送至用户对应的游戏客户端。

当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上的方法操作,还可以执行本发明任意实施例所提供的消息处理方法中的相关操作。

本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

14页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种多人游戏方法和装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类