CN112416598B - 消息处理方法、装置、电子设备及存储介质 - Google Patents
消息处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112416598B CN112416598B CN202011389134.9A CN202011389134A CN112416598B CN 112416598 B CN112416598 B CN 112416598B CN 202011389134 A CN202011389134 A CN 202011389134A CN 112416598 B CN112416598 B CN 112416598B
- Authority
- CN
- China
- Prior art keywords
- entity object
- message
- process entity
- offline
- player account
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供了一种消息处理方法、装置、电子设备及存储介质,该方法应用于服务器,该方法包括:当第一进程实体对象有目标消息需要发送时,第一进程实体对象检查第二进程实体对象对应的第二玩家账号是否在线,如果否,第一进程实体对象将目标消息写入第一离线消息数据库,以供第二进程实体对象在第二玩家账号在线时从第一离线消息数据库读取上述目标消息。本发明中,通过玩家的进程实体对象进行离线消息写数据库操作,减轻单点管理器的工作负荷,提高了离线消息的处理效率。
Description
技术领域
本发明涉及信息处理技术领域,尤其是涉及一种消息处理方法、装置、电子设备及存储介质。
背景技术
多人游戏应用中,经常涉及用户(即玩家)双方以及服务器与用户间的信息交互,该信息交互过程通常基于用户在线和离线两种状态进行。
对于单点注册机制的游戏应用软件,用户上线时将自己的通信地址mailbox注册到单点管理器(也称为单点管理进程,位于服务器)中,当用户离线时,单点管理器会删除该用户的通信地址。通常,服务器可以根据用户的通信地址(上述mailbox)判断该用户是否在线,对于在线用户的消息,可以直接向其通信地址发送消息,完成在线消息发送。对于离线用户的消息,则需要统一交由单点管理器将该离线消息写入指定的数据库。
单点管理器不仅负责管理所有的在线用户的通信地址,还需要对所有离线用户的离线消息进行数据库写入操作,负荷较重,影响了离线消息的处理效率。
发明内容
有鉴于此,本发明的目的在于提供一种消息处理方法、装置、电子设备及存储介质,以减轻单点管理器的工作负荷,提高离线消息的处理效率。
第一方面,本发明实施例提供一种消息处理方法,该方法应用于服务器,该服务器包括玩家账号对应的进程实体对象,该进程实体对象用于管理游戏业务;上述进程实体对象包括第一进程实体对象和第二进程实体对象;该方法包括:当第一进程实体对象有目标消息需要发送时,第一进程实体对象检查第二进程实体对象对应的第二玩家账号是否在线;如果否,第一进程实体对象将上述目标消息写入第一离线消息数据库,以供第二进程实体对象在第二玩家账号在线时从第一离线消息数据库读取上述目标消息。
上述服务器包括用于管理在线玩家账号的通信地址的单点管理器;上述第一进程实体对象包括第一存储空间;上述方法还包括:响应于第一进程实体对象的第一玩家账号的上线事件,第一进程实体对象向所述单点管理器获取所述第二玩家账号的通信地址,将获取的通信地址写入第一进程实体对象的第一存储空间;响应于第二玩家账号的第二进程实体对象广播的离线事件,第一进程实体对象将第一存储空间中第二玩家账号的通信地址删除。
上述服务器包括用于管理在线用户的通信地址的单点管理器;上述第一进程实体对象包括第一存储空间;第一进程实体对象检查第二进程实体对象对应的第二玩家账号是否在线的步骤,包括:第一进程实体对象向第一存储空间或单点管理器获取第二进程实体对象对应的第二玩家账号的通信地址;如果第一进程实体对象获取到第二玩家账号的通信地址,第一进程实体对象向第二玩家账号的通信地址发送目标消息,以使第二进程实体对象接收到该目标消息;如果在设定时长内未接收到第二进程实体对象返回的回应消息,第一进程实体对象确定第二玩家账号离线。
上述方法还包括:如果第一存储空间和单点管理器不存在第二玩家账号的通信地址,第一进程实体对象确定所述第二玩家账号离线。
上述第一进程实体对象将所述目标消息写入第一离线消息数据库的步骤之后,上述方法还包括:响应于所述第二进程实体对象返回的回应消息,第一进程实体对象确定所述回应消息的接收时长超过所述设定时长,从第一离线消息数据库删除所述目标消息;其中,该接收时长等于上述回应消息的接收时间点减去上述目标消息的发送时间点的差值。
上述第一进程实体对象向所述第二玩家账号的通信地址发送所述目标消息的步骤之后,上述方法还包括:第一进程实体对象启动预设的超时定时器;其中,所述超时定时器的定时时长为所述设定时长;在超时定时器的计时过程中,第一进程实体对象监听第二进程实体对象返回的回应消息。
上述第一进程实体对象将所述目标消息写入第一离线消息数据库的步骤,包括:第一进程实体对象根据所述目标消息的类型设置所述目标消息的存活期限参数;其中,该存活期限参数包括长期有效参数和指定期限内有效参数;所述第一进程实体对象将设置有所述存活期限参数的所述目标消息写入第一离线消息数据库。
上述方法还包括:在检测所述第二玩家账号离线时,基于所述存活期限参数维护所述目标消息。
上述方法还包括:当所述第一进程实体对象有目标消息需要发送时,所述第一进程实体对象检查所述目标消息是否设置有预设的可靠消息标识;如果是,第一进程实体对象将所述目标消息写入第二离线消息数据库,向第二进程实体对象发送通知消息,以通知第二进程实体对象的第二玩家账号在线时,向第二离线消息数据库获取所述目标消息;如果否,执行所述第一进程实体对象检查所述第二玩家账号是否在线的步骤。
第二方面,本发明实施例还提供一种消息处理装置,所述装置应用于服务器,所述服务器包括玩家账号对应的进程实体对象,所述进程实体对象用于管理游戏业务;所述进程实体对象包括第一进程实体对象和第二进程实体对象;该装置包括:检测模块,用于当第一进程实体对象有目标消息需要发送时,检查第二进程实体对象对应的第二玩家账号是否在线;消息写入模块,用于如果第二玩家账号离线,将目标消息写入第一离线消息数据库,以供第二进程实体对象在第二玩家账号在线时从第一离线消息数据库读取所述目标消息。
第三方面,本发明实施例还提供一种电子设备,包括处理器和存储器,存储器存储有能够被处理器执行的计算机可执行指令,处理器执行计算机可执行指令以实现上述消息处理方法。
第四方面,本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现上述消息处理方法。
本发明实施例带来了以下有益效果:
本发明实施例提供一种消息处理方法、装置、电子设备及存储介质,应用于包括玩家账号对应的进程实体对象的服务器,该进程实体对象用于管理游戏业务;当第一进程实体对象(也即第一玩家账号对应的进程实体对象,该第一玩家账号可以理解为第一用户使用的账号)有目标消息需要发送时,第一进程实体对象检查第二进程实体对象对应的第二玩家账号(也即第二用户使用的账号)是否在线,如果否,第一进程实体对象将目标消息写入第一离线消息数据库,以供第二进程实体对象在第二玩家账号在线时从第一离线消息数据库读取上述目标消息。这种方式中,在接收方的用户离线时,由进程实体对象进行离线消息写数据库操作,相比于通过单点管理器对所有离线用户的离线消息进行数据库写入操作的处理方式,本发明实施例有效利用游戏中进程实体对象的特性,使用进程实体对象处理离线消息,能够分担单点管理器的压力至各个玩家账号对应的进程实体对象,减轻了单点管理器的工作负荷,同时也提高了离线消息的处理效率。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种消息处理方法的流程图;
图2为本发明实施例提供的一种消息处理方法示意图;
图3为本发明实施例提供的另一种消息处理方法示意图;
图4为本发明实施例提供的另一种消息处理方法的流程图;
图5为本发明实施例提供的另一种消息处理方法的流程图;
图6为本发明实施例提供的另一种消息处理方法的流程图;
图7为本发明实施例提供的另一种消息处理方法示意图;
图8为本发明实施例提供的另一种消息处理方法示意图;
图9为本发明实施例提供的另一种消息处理方法的流程图;
图10为本发明实施例提供的服务器的结构示意图;
图11为本发明实施例提供的另一种消息处理方法示意图;
图12为本发明实施例提供的一种消息处理装置示意图;
图13为本发明实施例提供的另一种消息处理装置示意图;
图14本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合实施例对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有单点注册机制的应用范围比较广泛,一些多人互动游戏领域等通常会采用单点注册机制,该单点注册机制下,玩家上线时将自己的通信地址注册到服务器的单点管理器(也称为单点管理进程)中,当玩家离线时,单点管理器会删除该玩家的通信地址。在有离线玩家的消息时,服务器需要统一交由单点管理器将离线消息写入指定的数据库。单点管理器不仅负责管理所有的在线玩家的通信地址,还需要对所有离线玩家的离线消息进行数据库写入操作,负荷较重,影响了离线消息的处理效率。
针对上述问题,本发明实施例提供一种消息处理方法、装置、电子设备及存储介质,通过玩家的进程实体对象(也是服务器上的一个进程,如:entity对象)进行离线消息写入数据库操作,而单点管理器仅用于管理在线玩家的通信地址,分担单点管理器的压力至各个玩家的进程实体对象,减轻了单点管理器的工作负荷,提高了离线消息的处理效率。
为便于对本实施例进行理解,下面首先对本发明实施例提供的一种消息处理方法进行详细介绍。
本发明实施例提供的一种消息处理方法,该消息处理方法应用于服务器,该服务器的进程包括:单点管理器和玩家对应的进程实体对象,单点管理器用于管理在线玩家的通信地址(mailbox),该通信地址通常可以包含玩家所在终端的IP地址和端口号(port),以及玩家的唯一编号等。
基于上述服务器,参见图1所示的一种消息处理方法的流程图,该消息处理方法包括以下步骤:
步骤S102,当第一进程实体对象有目标消息需要发送时,第一进程实体对象检查第二进程实体对象对应的第二玩家账号是否在线;其中,第二进程实体对象为目标消息的接收方。
上述目标消息可以是第一进程实体对象的玩家发起的任何消息。检查第二进程实体对象对应的第二玩家账号是否在线,可以基于第一进程实体对象的存储空间是否有第二玩家账号的通信地址进行判断,也可以向单点管理器查询第二玩家账号是否在线。
步骤S104,如果第二进程实体对象对应的第二玩家账号离线,第一进程实体对象将目标消息写入第一离线消息数据库,以供第二进程实体对象在第二玩家账号在线时从上述第一离线消息数据库读取目标消息。
其中,第一离线消息数据库可以存储各个离线玩家的离线消息,在存储过程中,可以基于玩家标识分别存储,以便于后续查找。
本发明实施例中的进程实体对象是提供游戏业务功能的进程,如管理游戏房间、角色位置、战斗状态等。在实现本发明的过程中,考虑到进程实体对象与玩家账号一一对应,且玩家账号发起的消息均通过该玩家账号对应的进程实体对象处理,以第一玩家账号有消息需要发送给第二玩家账号为例,第一玩家账号对应的第一进程实体对象会接收到第一玩家账号的用户输入或触发的待发送消息,第一进程实体对象通过存储空间(用于存储在线的其它玩家账号的通信地址)或者单点管理器可以确定第二玩家账号是否离线,如果第二玩家账号离线,第一进程实体对象无需将待发送消息转发给其它模块,直接将该待发送消息写入相应的离线消息数据库即可。通过进程实体对象完成离线消息的数据库写入操作,无需离线消息的转发等中间环节,通常服务器上离线消息的数量比较大,通过这种方式既分担了以单点管理器处理离线消息的负荷,又能够避免因转发离线消息引起新的处理压力。
基于进程实体对象为消息的处理进程,且能够通过存储空间或者单点管理器获取消息接收方的在线离线状态的特性,上述消息处理方法中的服务器,当第一进程实体对象(也即第一玩家账号对应的进程实体对象,该第一玩家账号可以理解为第一用户使用的账号)有目标消息需要发送时,第一进程实体对象检查第二进程实体对象对应的第二玩家账号(也即第二用户使用的账号)是否在线,如果否,第一进程实体对象将目标消息写入第一离线消息数据库,以供第二进程实体对象在第二玩家账号在线时从第一离线消息数据库读取上述目标消息。这种方式中,在接收方的用户离线时,由进程实体对象进行离线消息写数据库操作,相比于通过单点管理器对所有离线用户的离线消息进行数据库写入操作的处理方式,能够分担单点管理器的压力至各个玩家账号对应的进程实体对象,在保障游戏其它相关性能的基础上,有效利用游戏中进程实体对象的上述特性,使用进程实体对象处理离线消息,减轻了单点管理器的工作负荷,同时也提高了离线消息的处理效率。
参见图2所示的一种消息处理方法示意图,其中,以玩家A有消息需要发给玩家B为例进行说明,假设玩家A和玩家B均在线,该方法包括以下过程:
(1)客户端A发送RPC(Remote Procedure Call,远程过程调用)请求消息至服务器。
玩家A通过终端A上的语音采集器或者键盘等输入设备将消息内容传送至玩家A的客户端A,其中,玩家A的玩家账号登录客户端A,客户端A基于消息内容生成RPC请求消息发送给服务器,该消息携带有玩家A的通信地址和玩家B的唯一编码。
(2)服务器上的进程A(这里进程A指玩家A对应的进程实体对象)接收到该RPC请求消息,基于玩家B的唯一编码获取玩家B的通信地址,将获取的玩家B的通信地址添加至RPC请求消息中发送给玩家B对应的进程B(这里进程B指玩家B对应的进程实体对象)。该RPC请求消息的发送可以通过回调函数Call实现。
(3)进程B接收到RPC请求消息后,向进程A返回RPC回应,并将RPC请求消息发送给玩家B的客户端B进行后续处理。
(4)进程A将RPC回应发给客户端A,这样玩家A确定上述消息发送成功。
参见图3所示的另一种消息处理方法示意图,其中,以玩家A有消息需要发给玩家B为例进行说明,假设玩家A在线,而玩家B离线之后再次上线,该方法包括以下过程:
(1)客户端A发送RPC请求消息至服务器。
与图2类似,玩家A通过终端A上的语音采集器或者键盘等输入设备将消息内容传送至玩家A的客户端A,客户端A基于消息内容生成RPC请求消息发送给服务器,该消息携带有玩家A的通信地址和玩家B的唯一编码。
(2)服务器上的进程A(这里进程A指玩家A对应的进程实体对象)接收到该RPC请求消息,基于玩家B的唯一编码获取玩家B的通信地址,因为玩家B离线,所以获取玩家B通信地址可能失败。进程A将RPC请求消息写入离线消息数据库之后,进程A也可以向客户端A返回RPC回应,避免客户端A再次重复发送上述RPC请求消息。
(3)进程B(这里进程B指玩家B对应的进程实体对象)发现玩家B再次上线时,从离线消息数据库获取玩家B的离线消息,将离线消息发送给客户端B。
玩家B上线时,可以向进程B发送自身的通信地址,或者其他消息,以使进程B确定客户端B对应的玩家B上线。
上述客户端B收到RPC请求消息或离线消息后,也可以向进程B返回确认消息,以使进程B确定客户端B成功接收到该消息。
上述图2和图3简单描述了正常消息的处理流程和离线消息的处理流程,由玩家对应的进程实体对象处理离线消息,各个玩家对应的进程能够仅处理自身玩家对应的离线消息,离线消息的数目相对于单点管理器处理所有离线消息来说,是很小的数目,因此各个玩家对应的进程能够较快速地将离线消息写入数据库,而单点管理器则无需在管理玩家通信地址的同时,处理离线消息,减少了单点管理器的负荷,也提升了离线消息的处理效率。
上述服务器还包括用于管理在线用户的通信地址的单点管理器;上述第一进程实体对象包括第一存储空间;为了较为合理地维护各个玩家对应的进程的存储空间,有效利用服务器资源,上述消息处理方法还包括以下步骤(1)和(2):
(1)响应于第一进程实体对象的第一玩家账号的上线事件,第一进程实体对象向单点管理器获取第二玩家账号的通信地址,将获取的通信地址写入第一进程实体对象的第一存储空间。
本发明实施例中的第一进程实体对象,在第一玩家账号的上线时,向单点管理器获取第二玩家账号的通信地址,该第二玩家账号可以是第一玩家账号关联的指定玩家账号之一,这里的账号关联通常为玩家预先配置的,例如玩家预先配置的好友玩家或组队玩家或者群组玩家等对应的玩家账号,均可以视为该玩家账号关联的玩家账号。
例如,当玩家上线时,玩家的进程实体对象可以一次性从单点管理器获取该玩家对应的所有指定玩家(例如该玩家的好友、同组或同群玩家,以及该玩家所在进程场景中的其它玩家等)的通信地址,将通信地址保存在进程实体对象的本地存储空间。
(2)响应于上述第二玩家账号的第二进程实体对象广播的离线事件,第一进程实体对象将上述第一存储空间中该第二玩家账号的通信地址删除。
当有离线玩家时,离线玩家的进程实体对象会通过广播方式通知其它玩家,以使其它玩家的进程实体对象删除本地存储空间中该离线玩家的通信地址。
上述存储空间的维护方式能使玩家的进程实体对象每次给该玩家关联的指定玩家发消息时,不用去单点管理器获取该指定玩家对应的通信地址,且通过自身维护的存储空间可以简单知道哪些玩家在线,进一步缓解频繁访问单点管理器产生的通信损耗和单点管理器的负荷。
参见图4所示的另一种消息处理方法的流程图,该方法在图1所示方法的基础上,重点描述第一进程实体对象检查第二玩家是否在线的一种实现方式,该方法包括以下步骤:
步骤S402,当第一进程实体对象有目标消息需要发送时,第一进程实体对象向第一存储空间或单点管理器获取第二进程实体对象对应的第二玩家账号的通信地址。
上述第一进程实体获取第二玩家账号的通信地址,可以直接从第一存储空间或单点管理器获取。第一进程实体对象也可以先从第一存储空间获取第二进程实体对象对应的第二玩家账号的通信地址。其中,第二进程实体对象为目标消息的接收方。如果第一存储空间不存在第二玩家账号的通信地址,第一进程实体对象再向单点管理器获取第二玩家账号的通信地址。
步骤S404,如果第一进程实体对象获取到第二玩家账号的通信地址,第一进程实体对象向第二玩家账号的通信地址发送目标消息,以使第二进程实体对象接收到上述目标消息。
步骤S406,如果在设定时长内未接收到第二进程实体对象返回的回应消息,第一进程实体对象确定第二玩家账号离线。
如果上述第一存储空间和单点管理器均不存在第二玩家账号的通信地址,第一进程实体对象确定第二玩家账号离线。对于第二玩家账号离线的情况,均执行下述步骤S408。
步骤S408,第一进程实体对象将目标消息写入第一离线消息数据库,以供第二进程实体对象在第二玩家账号在线时读取目标消息。
上述消息处理方法中,考虑到极端情况下,可能存在接收方在发送方刚要发送消息时离线,此时,发送方的存储空间中还保存有接收方的通信地址,为了避免消息丢失,在上述消息处理方法的基础上,第一进程实体对象从第一存储空间获取到第二玩家账号的通信地址之后,发送目标消息,如果在设定时长内未接收到回应消息,则确定第二玩家账号离线,进而将上述目标消息写入离线消息数据库。这种方式能够在减少访问单点管理器的基础上,通过设定时长内是否收到回应消息有效核实消息接收方是否在线,并在接收方离线时,直接将消息写入第一离线消息数据库,而不再通知单点管理器进行离线消息的处理操作,在缓解单点管理器负荷的基础上,提升了离线消息写入数据库操作的效率。
为了进一步提升离线消息的处理性能,在上述消息处理方法的基础上,本发明实施例还提供了另一种消息处理方法,该方法中重点描述发送方的存储空间保存有接收方的通信地址时的离线消息处理过程,参见图5所示的另一种消息处理方法流程图,该方法包括以下步骤:
步骤S502,当第一进程实体对象有目标消息需要发送时,第一进程实体对象从第一存储空间获取第二进程实体对象对应的第二玩家账号的通信地址。其中,第二进程实体对象为目标消息的接收方。
步骤S504,第一进程实体对象向第二玩家账号的通信地址发送目标消息,第一进程实体对象启动预设的超时定时器;其中,该超时定时器的定时时长为设定时长。
步骤S506,在超时定时器的计时过程中,第一进程实体对象监听第二进程实体对象返回的回应消息。
步骤S508,如果在设定时长内未接收到第二进程实体对象返回的回应消息,第一进程实体对象确定第二玩家账号离线。
步骤S510,第一进程实体对象将目标消息写入第一离线消息数据库,以供第二进程实体对象在第二玩家账号在线时从第一离线消息数据库读取目标消息。
上述消息处理方法中,第一进程实体对象从第一存储空间获取到第二玩家账号的通信地址之后,发送目标消息,为了有效监测回应消息,发送完目标消息后,第一进程实体对象启动超时定时器,仅在超时定时器的计时过程中监听第二进程实体对象是否返回的回应消息。通过这种超时定时器记录时间的方式,简单易行,能够在超时定时器超时时,直接将消息写入离线消息数据库,而不再通知单点管理器进行离线消息的处理操作,在缓解单点管理器负荷的基础上,提升了离线消息写数据库操作的效率。
上述方法中,如果接收方离线,目标消息会写入第一离线消息数据库中,用以在接收方再次上线时,从第一离线消息数据库中得到其离线过程中的消息,也就意味着,通常写入第一离线消息数据库中的消息均会在接收方上线时,发送给接收方。对于因为网络传输延时导致的回应消息接收滞后的现象,为了避免接收方重复收到同一消息,本发明实施例在上述方法基础上,提供了另一种消息处理方法,该方法主要描述回应消息滞后的处理方式,参见图6所示的另一种消息处理方法的流程图,该消息处理方法包括以下步骤:
步骤S602,当第一进程实体对象有目标消息需要发送时,第一进程实体对象从第一存储空间获取第二进程实体对象对应的第二玩家账号的通信地址。其中,第二进程实体对象为目标消息的接收方。
当然,如果第一玩家账号上线早于第二玩家账号,第一存储空间也可能没有第二玩家账号的通信地址,第一进程实体对象从第一存储空间无法获取到第二玩家账号的通信地址,这种情况下,第一进程实体对象可以从单点管理器获取第二玩家账号的通信地址,如果能够从单点管理器获取到第二玩家账号的通信地址,说明此刻第二玩家账号应该在线。
步骤S604,第一进程实体对象向第二玩家的通信地址发送目标消息,以使第二进程实体对象接收到目标消息。
步骤S606,如果在设定时长内未接收到第二进程实体对象返回的回应消息,第一进程实体对象确定第二玩家账号离线。
步骤S608,第一进程实体对象将目标消息写入第一离线消息数据库,以供第二进程实体对象在第二玩家账号在线时读取目标消息。
步骤S610,响应于第二进程实体对象返回的回应消息,第一进程实体对象确定回应消息的接收时长超过上述设定时长,从第一离线消息数据库删除目标消息。其中,接收时长等于回应消息的接收时间点减去目标消息的发送时间点的差值。
上述消息处理方法中,第一进程实体对象在设定时长未收到回应消息时,确定第二玩家账号离线,将上述目标消息写入离线消息数据库。如果后续又收到上述目标消息的回应消息时,确定该目标消息已被接收方接收,但是此时回应消息的接收时长已经超过了上述设定时长,说明目标消息已经写入第一离线消息数据库,因此通过删除第一离线消息数据库中的目标消息的方式避免后续再次发送目标消息给第二玩家账号,减少不必要的数据库空间浪费和冗余消息的发送流程,在缓解单点管理器负荷的基础上,合理地维护了离线消息数据库的存储空间,保障了消息传送的可靠性。
下面以游戏应用场景为例,游戏场景中的进程实体对象为各个玩家对应的进程,为了便于说明,简称玩家实体。下面以玩家实体均配置有超时定时器为例进行说明,参见图7所示的消息处理方法示意图,该方法包括以下步骤:
(1)玩家实体A有需要发送给玩家实体B的消息,获取到玩家实体B对应的玩家B的通信地址后,直接向玩家实体B发送该消息,并启动超时定时器。
(2)玩家实体B收到上述消息后,向玩家实体A返回回应消息。
(3)玩家实体A在超时定时器计时过程中接收上述回应消息,结束当前流程。
参见图8所示的另一种消息处理方法示意图,该方法包括以下步骤:
(1)玩家实体A有需要发送给玩家实体B的消息,获取到玩家实体B对应的玩家B的通信地址后,直接向玩家实体B发送该消息,并启动超时定时器。
(2)玩家实体B收到上述消息后,向玩家实体A返回回应消息。
(3)玩家实体A在超时定时器计时结束时,没有接收到上述回应消息,将上述消息写入离线消息数据库。
(4)玩家实体A在超时定时器计时结束后,收到上述回应消息,将离线消息数据库中的上述消息删除。
上述过程中,玩家实体B也可以在接收到上述消息时,计算消息接收时间与消息发送时间(消息中可以携带该发送时间)的差值,如果差值小于上述设定时间的一半,返回回应消息;如果差值大于或等于上述设定时间的一半,则不返回回应消息。这样可以后续通过读离线消息数据库中的消息,得到上述消息,这种情况下,玩家实体A则不会收到超时的回应消息,不需要对离线消息数据库中的消息进行删除操作。两种方式均可以,本发明实施例对此不进行限定。
为了便于维护离线消息数据库中的消息,每个消息均可以设置在数据库中保存的期限参数,基于此,上述第一进程实体对象将目标消息写入第一离线消息数据库的步骤,可以包括:
(1)第一进程实体对象根据目标消息的类型设置目标消息的存活期限参数。其中,存活期限参数包括长期有效参数和指定期限内有效参数。
(2)第一进程实体对象将设置有存活期限参数的目标消息写入第一离线消息数据库,以使第一离线消息数据库在第二玩家账号未上线期间,基于存活期限参数维护目标消息。
通常每个玩家都会有多种不同类型的离线消息,比如离线好友申请、离线好友私聊、离线奖励邮件等,这些不同类型的离线消息通过离线消息名来区分,对于不同类型的离线消息期望的处理方式会有所不同。比如离线好友申请,通常不希望该类型的离线消息一直存在,因此需要对该类型的离线消息设置指定期限内有效参数。又比如离线奖励邮件,通常希望该类型的离线消息永久有效,因此需要对该类型的离线消息设置长期有效参数。
上述第一离线消息数据库可以为mongo数据库,上述存活期限参数可以是TTL(Time To Live,生存时间值),这样数据库可以利用TTL机制维护mongo数据库中的目标消息。当然,上述存活期限参数还可以用alive参数表示,alive参数表示是否长期有效,默认为false,即非长期有效。如果目标消息的alive参数为false,即目标消息不是长期有效,则可以根据离线消息的类型分为7天有效期和30天有效期,该期限可以用TTL实现。例如:涉及到游戏中物品发放的离线消息则会保存时间长一点,如30天有效,其他通知类离线消息保存短一点,如7天有效。
基于上述离线消息对应的存活期限参数,上述方法还包括:在检测第二玩家账号离线时,基于该目标消息对应的存活期限参数维护该目标消息。具体地,可以仅在该目标消息对应的存活期限参数的期限内,保留该目标消息,当维护至该目标消息对应的存活期限参数无效时,从第一离线消息数据库中删除该目标消息,以避免大量离线消息消耗资源。
考虑到消息类型比较多,有些消息对于可靠性的要求比较高,而游戏消息对可靠性的要求比较低,基于此,本发明实施例还提供了另一种消息处理方法,该方法主要描述可靠消息和非可靠消息的处理方式。参见图9所示的另一种消息处理方法的流程图和图10所示的服务器的结构示意图,该服务器包括多个进程实体对象,图10中以第一进程实体对象和第二进程实体对象为例进行说明。该服务器还包括单点管理器以及两个离线消息数据库,分别为存储普通离线消息的第一离线消息数据库和存储重要消息的第二离线消息数据库。第一进程实体对象和第二进程实体对象可以通过单点管理器得到其他玩家账号的通信地址。参见图9,该消息处理方法包括以下步骤:
步骤S902,当第一进程实体对象有目标消息需要发送时,第一进程实体对象检查目标消息是否设置有预设的可靠消息标识。如果是,执行步骤S904;如果否,执行步骤S906。
具体地,可靠消息标识能够表征目标消息是否为重要消息,如果目标消息是重要消息时,则在目标消息中添加可靠消息标识。
步骤S904,第一进程实体对象将目标消息写入第二离线消息数据库,向第二进程实体对象发送通知消息,以通知第二进程实体对象的第二玩家账号在线时,向第二离线消息数据库获取目标消息。
上述第二进程实体对象为目标消息的接收方。
步骤S906,第一进程实体对象检查第二进程实体对象对应的第二玩家账号是否在线,如果第二玩家账号不在线,第一进程实体对象将目标消息写入第一离线消息数据库,以供第二进程实体对象在第二玩家账号在线时从第一离线消息数据库读取目标消息。
上述消息处理方法中,通过预设的可靠消息标识可以区分目标消息是否为重要消息,当目标消息设置有可靠消息标识时,则该目标消息为重要消息,需要将目标消息写入第二离线消息数据库,再向第二进程实体对象发送通知消息,使其直接从第二离线消息数据库获取到目标消息。若目标消息没有设置可靠消息标识,则该目标消息为普通消息,可以按照上述实施例中的消息处理方法进行处理,即检查第二玩家是否在线,不在线时,第一进程实体对象将目标消息写入第一离线消息数据库,以供第二玩家在线时从第一离线消息数据库读取该目标消息。通过这种消息类型区分方式,可以保证重要消息的不丢失,而对于普通消息,一方面保证了消息发送的及时性,另一方面,如果所有消息都是先写入离线消息数据库再通知接收方的话,可能会造成大量消息存储在离线消息数据库中,增加数据库的维护成本,通过将普通消息先尝试发送,只有确认离线时再存储的方式,也减轻了数据库的维护成本。并且这种进程实体对象进行离线消息写入数据库操作的方式,单点管理器仅用于管理在线玩家的通信地址,相比于通过单点管理器对所有离线玩家的离线消息进行数据库写入操作的处理方式,本发明实施例能够分担单点管理器的压力至各个玩家的进程实体对象,减轻了单点管理器的工作负荷,同时也提高了离线消息的处理效率。
上述可靠消息标识可以有两个参数,一个为true,表示该消息为重要消息;一个为false,表示该消息为普通消息。参见图11所示的另一种消息处理方法示意图,该方法中以需要发送的消息为重要消息为例进行说明。
(1)对于配置了true状态的可靠消息,玩家实体A不会直接将该消息call给玩家实体B,而是将该消息直接写入第二离线消息数据库中,然后再向玩家实体B发送通知,该通知可以携带该消息在第二离线消息数据库中的位置等信息。
(2)玩家实体B收到上述通知,如果正常在线则去第二离线消息数据库中读取该消息,例如发送读取消息的请求给第二离线消息数据库,第二离线消息数据库收到玩家实体B的读取消息请求时,向玩家实体B返回消息。如果玩家实体B对应的玩家刚好离线了,则在该玩家再次在线时,从第二离线消息数据库中读取该消息。
如果第二离线消息数据库将消息返回给玩家实体B,第二离线消息数据库会删掉该消息。
为了便于上述离线消息数据库(可以包括第一离线消息数据库和第二离线消息数据库)管理,上述服务器的进程还包括数据库管理进程,基于此,上述方法还包括:所述数据库管理进程在第二玩家账号未上线期间,基于上述存活期限参数维护目标消息。除了基于存活期限参数维护离线消息数据库中的消息之外,还可以基于每个玩家对应的离线消息条数进行维护。具体数据库中的消息维护方式可以参考其它相关数据库实现,本发明实施例对此不进行限定。
上述进程实体对象进行消息处理过程可以视为离线处理模块。该离线处理模块可以对接上层逻辑(通常指即时通信或游戏应用的其它玩家层面的业务逻辑),例如,离线处理模块可以配置safe_call_entity接口和load接口等,safe_call_entity接口用于消息发送,load接口用于与离线数据库对接,上传或下载离线消息。上层逻辑无需关心玩家账号是否在线,只要有消息需要发送,离线处理模块均会按照上述实施例提供的消息处理方法实现消息的传递。
上述方法以第二玩家账号在线或离线描述的消息处理过程,对于第一玩家账号,也存在离线情况,基于此,上述消息处理方法还包括:当第一玩家账号上线时,响应于第一进程实体对象的第一玩家账号的上线事件,第一进程实体对象从第一离线消息数据库读取第一玩家账号的离线消息。如果第二离线消息数据库中存在第一玩家账号的消息,第一进程实体对象也可以从第二离线消息数据库读取第一玩家账号的消息。
在读取第一离线消息数据库的时候,可以采用mongo数据库提供的find_and_modify接口,通过该接口这样可以在读取到离线消息的同时,更新第一离线消息数据库,这里的更新可以包括将读取完的消息从第一离线消息数据库中删除,以及更新第一玩家的读取时间戳。find_and_modify接口还可以保证读取消息和更新第一离线消息数据库操作的一致性。
第一离线消息数据库中的消息可以按照玩家账号进行分类,即同一玩家账号的消息归为同一类,在此分类基础上,还可以按照消息的存活期限参数进行分类。每条消息记录的参数可以包括以下几项:
targe:为接收方玩家的唯一标识编号;
day:为当天日期数;
operator:为离线消息名;
alive_time:存活时间(相当于上述存活期限参数),控制离线信息的过期时间;
args_list:离线信息的参数列表,其中包含了时间戳,该时间戳指该消息写入离线消息数据库的时间。
以第一进程实体对象读取第一玩家账号的消息为例,第一进程实体对象可以遍历第一离线消息数据库中第一玩家账号的所有消息,对于每一个被遍历的消息,均执行以下操作:
(1)第一进程实体对象均检查该消息的时间戳是否小于第一玩家账号的已处理时间戳;其中,第一玩家账号的已处理时间戳为最近一次第一进程实体对象访问第一离线消息数据库读取消息的时间。
(2)如果该消息的时间戳小于第一玩家账号的已处理时间戳,则说明该消息之前已经被第一进程实体对象读取过,无需再次读取,跳过该消息读取下一条消息。
(3)如果该消息的时间戳不小于第一玩家账号的已处理时间戳,第一进程实体对象读取该消息,第一离线消息数据库在确定该消息已被读取成功后,删除该消息。
除了上述时间戳检查机制之外,还可以看消息的统计次数,第一离线消息数据库可以每隔一段时间,遍历一次数据库,并记录被遍历的消息的统计次数。如果统计次数大于设定阈值,说明该消息存储于第一离线消息数据库中的时间比较久了,可以不关注这些消息,当进程实体对象读取消息时,这些统计次数较大的消息也可以不被读取,而优先读取统计次数较小的消息。
消息读取成功后,第一进程实体对象可以调用该消息对应的方法函数,对该消息进行处理。
考虑极端情况下,某些玩家积累的离线消息会很多,这个时候全部处理会对服务端产生一定的压力。因此可以针对不同的离线消息做一下取舍。例如离线好友申请,处理的数量不得高于预定的最大值。具体不同的离线消息的上限可以结合实际业务来定,比如离线邮件,可以最多50封邮件,比如离线的好友申请,最多100条等等。
以上消息处理方法,即使出现一些极端情况,也可以确保离线消息的不丢失。例如:玩家账号的进程实体对象在刚刚在单点管理器注册通信地址前一瞬间有一条离线消息,通过上述方法,如果该离线消息是重要消息,则会写入第二离线消息数据库。如果该离线消息是普通消息,因无法获取到玩家的通信地址,该离线消息会写入第一离线消息数据库,进而不会造成消息丢失。又或者,玩家账号的进程实体对象在取消注册前一瞬间有一条离线消息,如上所述,如果该消息是重要消息,会直接写入第二离线消息数据库。如果该消息是普通消息,则会发送给该玩家账号,但因为玩家账号取消注册,离线了,则不会有回应消息,故该消息会写入至第一离线消息数据库,也不会造成离线消息的丢失。
上述方法中,针对不同的离线消息类型(重要消息和普通消息),使用不同的处理流程,在保证上层逻辑正确的前提下,减少了单点管理器的压力,普通消息尽可能在玩家在线时直接发送给玩家的机制也降低了离线消息数据库的访问。
基于上述方法实施例,本发明实施例还提供一种消息处理装置,该装置应用于服务器,服务器包括玩家账号对应的进程实体对象,该进程实体对象用于管理游戏业务;该进程实体对象包括第一进程实体对象和第二进程实体对象;参见图12所示,上述装置包括:
检测模块122,用于当第一进程实体对象有目标消息需要发送时,检查第二进程实体对象对应的第二玩家账号是否在线;其中,第二进程实体对象为所述目标消息的接收方;
消息写入模块124,用于如果第二玩家账号离线,将目标消息写入第一离线消息数据库,以供第二进程实体对象在第二玩家账号在线时从第一离线消息数据库读取所述目标消息。
上述装置这种方式中,当第一进程实体对象(也即第一玩家账号对应的进程实体对象,该第一玩家账号可以理解为第一用户使用的账号)有目标消息需要发送时,第一进程实体对象检查第二进程实体对象对应的第二玩家账号(也即第二用户使用的账号)是否在线,如果否,第一进程实体对象将目标消息写入第一离线消息数据库,以供第二进程实体对象在第二玩家账号在线时从第一离线消息数据库读取上述目标消息。这种方式中,在接收方的用户离线时,由进程实体对象进行离线消息写数据库操作,相比于通过单点管理器对所有离线用户的离线消息进行数据库写入操作的处理方式,本发明实施例能够分担单点管理器的压力至各个玩家账号对应的进程实体对象,减轻了单点管理器的工作负荷,同时也提高了离线消息的处理效率。
参见图13,在图12所示装置的基础上,上述服务器还包括:单点管理器,单点管理器用于管理在线玩家的通信地址;上述进程实体对象对应的存储空间用于存储指定玩家的通信地址;上述装置还包括:写入模块132,用于响应于所述第一进程实体对象的第一玩家账号的上线事件,向所述单点管理器获取所述第二玩家账号的通信地址,将获取的所述通信地址写入所述第一进程实体对象的第一存储空间;第一删除模块134,用于响应于所述第二玩家账号的第二进程实体对象广播的离线事件,将所述第一存储空间中所述第二玩家账号的通信地址删除。
上述检测模块122还用于:向所述第一存储空间或所述单点管理器获取第二进程实体对象对应的第二玩家账号的通信地址。具体地,如从所述第一存储空间获取第二进程实体对象对应的第二玩家的通信地址;如果所述第一存储空间不存在第二玩家的通信地址,向单点管理器获取第二玩家的通信地址;如果单点管理器不存在第二玩家的通信地址,确定所述第二玩家离线。
上述检测模块122还用于:如果第一进程实体对象获取到第二玩家账号的通信地址,向第二玩家账号的通信地址发送目标消息,以使第二进程实体对象接收到所述目标消息;如果在设定时长内未接收到第二进程实体对象返回的回应消息,确定第二玩家账号离线。
上述装置还包括:第二删除模块136,用于响应于第二进程实体对象返回的回应消息,确定所述回应消息的接收时长超过设定时长,从第一离线消息数据库删除目标消息;其中,所述接收时长等于回应消息的接收时间点减去所述目标消息的发送时间点的差值。
上述装置还包括:定时器应用模块138,用于启动预设的超时定时器;其中,所述超时定时器的定时时长为所述设定时长;在超时定时器的计时过程中,监听第二进程实体对象返回的回应消息。
上述消息写入模块124还用于:根据目标消息的类型设置目标消息的存活期限参数;其中,所述存活期限参数包括长期有效参数和指定期限内有效参数;以及将设置有存活期限参数的所述目标消息写入第一离线消息数据库。
上述服务器的进程还包括数据库管理进程,上述装置还包括:数据库管理模块140,用于在检测所述第二玩家账号离线时,基于所述存活期限参数维护所述目标消息。
上述装置还包括:标识检查模块142,用于当第一进程实体对象有目标消息需要发送时,检查所述目标消息是否设置有预设的可靠消息标识;
可靠消息写模块144,用于当目标消息设置有预设的可靠消息标识时,将所述目标消息写入第二离线消息数据库,向第二进程实体对象发送通知消息,以通知所述第二进程实体对象的第二玩家账号在线时,向所述第二离线消息数据库获取所述目标消息;
上述检测模块122还用于当目标消息未设置有预设的可靠消息标识时,执行第一进程实体对象检查第二进程实体对象对应的第二玩家是否在线的功能。
上述装置还包括:读取模块146,用于响应于第一进程实体对象的第一玩家账号的上线事件,从第一离线消息数据库读取第一玩家账号的消息。
本发明实施例提供的消息处理装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,消息处理装置的实施例部分未提及之处,可参考前述消息处理方法实施例中相应内容。
本发明实施例还提供了一种电子设备,如图14所示,为该电子设备的结构示意图,其中,该电子设备包括处理器1401和存储器1402,该存储器1402存储有能够被该处理器1401执行的计算机可执行指令,该处理器1401执行该计算机可执行指令以实现上述消息处理方法。
在图14示出的实施方式中,该电子设备还包括总线1403和通信接口1404,其中,处理器1401、通信接口1404和存储器1402通过总线1403连接。
其中,存储器1402可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口1404(可以是有线或者无线)实现该***网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线1403可以是ISA(IndustryStandard Architecture,工业标准体系结构)总线、PCI(Peripheral ComponentInterconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。总线1403可以分为地址总线、数据总线、控制总线等。为便于表示,图14中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器1401可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1401中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1401可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignal Processor,简称DSP)、专用集成电路(Application Specific IntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器1401读取存储器中的信息,结合其硬件完成前述实施例的消息处理方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令在被处理器调用和执行时,该计算机可执行指令促使处理器实现上述消息处理方法,具体实现可参见前述方法实施例,在此不再赘述。
本发明实施例所提供的消息处理方法、装置、电子设备及存储介质的计算机程序产品,包括存储了程序代码的计算机可读存储介质,程序代码包括的指令可用于执行前面方法实施例中的方法,具体实现可参见方法实施例,在此不再赘述。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。
功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (11)
1.一种消息处理方法,其特征在于,所述方法应用于服务器,所述服务器包括玩家账号对应的进程实体对象,所述进程实体对象用于管理游戏业务;所述进程实体对象包括第一进程实体对象和第二进程实体对象;所述服务器包括用于管理在线用户的通信地址的单点管理器;所述第一进程实体对象包括第一存储空间;所述方法包括:
当所述第一进程实体对象有目标消息需要发送时,所述第一进程实体对象检查第二进程实体对象对应的第二玩家账号是否在线;
如果否,所述第一进程实体对象将所述目标消息写入第一离线消息数据库,以供所述第二进程实体对象在所述第二玩家账号在线时从所述第一离线消息数据库读取所述目标消息;
所述第一进程实体对象检查第二进程实体对象对应的第二玩家账号是否在线的步骤,包括:所述第一进程实体对象向所述第一存储空间或所述单点管理器获取第二进程实体对象对应的第二玩家账号的通信地址;如果所述第一进程实体对象获取到所述第二玩家账号的通信地址,所述第一进程实体对象向所述第二玩家账号的通信地址发送所述目标消息,以使所述第二进程实体对象接收到所述目标消息;如果在设定时长内未接收到所述第二进程实体对象返回的回应消息,所述第一进程实体对象确定所述第二玩家账号离线。
2.根据权利要求1所述的方法,其特征在于,所述服务器包括用于管理在线玩家账号的通信地址的单点管理器;所述第一进程实体对象包括第一存储空间;所述方法还包括:
响应于所述第一进程实体对象的第一玩家账号的上线事件,所述第一进程实体对象向所述单点管理器获取所述第二玩家账号的通信地址,将获取的所述通信地址写入所述第一进程实体对象的第一存储空间;
响应于所述第二玩家账号的第二进程实体对象广播的离线事件,所述第一进程实体对象将所述第一存储空间中所述第二玩家账号的通信地址删除。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
如果所述第一存储空间和所述单点管理器不存在所述第二玩家账号的通信地址,所述第一进程实体对象确定所述第二玩家账号离线。
4.根据权利要求1所述的方法,其特征在于,所述第一进程实体对象将所述目标消息写入第一离线消息数据库的步骤之后,所述方法还包括:
响应于所述第二进程实体对象返回的回应消息,所述第一进程实体对象确定所述回应消息的接收时长超过所述设定时长,从所述第一离线消息数据库删除所述目标消息;其中,所述接收时长等于所述回应消息的接收时间点减去所述目标消息的发送时间点的差值。
5.根据权利要求1或4所述的方法,其特征在于,所述第一进程实体对象向所述第二玩家账号的通信地址发送所述目标消息的步骤之后,所述方法还包括:
所述第一进程实体对象启动预设的超时定时器;其中,所述超时定时器的定时时长为所述设定时长;
在所述超时定时器的计时过程中,所述第一进程实体对象监听所述第二进程实体对象返回的回应消息。
6.根据权利要求1所述的方法,其特征在于,所述第一进程实体对象将所述目标消息写入第一离线消息数据库的步骤,包括:
所述第一进程实体对象根据所述目标消息的类型设置所述目标消息的存活期限参数;其中,所述存活期限参数包括长期有效参数和指定期限内有效参数;
所述第一进程实体对象将设置有所述存活期限参数的所述目标消息写入第一离线消息数据库。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在检测所述第二玩家账号离线时,基于所述存活期限参数维护所述目标消息。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述第一进程实体对象有目标消息需要发送时,所述第一进程实体对象检查所述目标消息是否设置有预设的可靠消息标识;
如果是,所述第一进程实体对象将所述目标消息写入第二离线消息数据库,向第二进程实体对象发送通知消息,以通知所述第二进程实体对象的第二玩家账号在线时,向所述第二离线消息数据库获取所述目标消息;
如果否,执行所述第一进程实体对象检查所述第二玩家账号是否在线的步骤。
9.一种消息处理装置,其特征在于,所述装置应用于服务器,所述服务器包括玩家账号对应的进程实体对象,所述进程实体对象用于管理游戏业务;所述进程实体对象包括第一进程实体对象和第二进程实体对象;所述服务器包括用于管理在线用户的通信地址的单点管理器;所述第一进程实体对象包括第一存储空间;所述装置包括:
检测模块,用于当所述第一进程实体对象有目标消息需要发送时,检查第二进程实体对象对应的第二玩家账号是否在线;其中,检查第二进程实体对象对应的第二玩家账号是否在线包括:所述第一进程实体对象向所述第一存储空间或所述单点管理器获取第二进程实体对象对应的第二玩家账号的通信地址;如果所述第一进程实体对象获取到所述第二玩家账号的通信地址,所述第一进程实体对象向所述第二玩家账号的通信地址发送所述目标消息,以使所述第二进程实体对象接收到所述目标消息;如果在设定时长内未接收到所述第二进程实体对象返回的回应消息,所述第一进程实体对象确定所述第二玩家账号离线;
消息写入模块,用于如果所述第二玩家账号离线,将所述目标消息写入第一离线消息数据库,以供所述第二进程实体对象在所述第二玩家账号在线时从所述第一离线消息数据库读取所述目标消息。
10.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机可执行指令,所述处理器执行所述计算机可执行指令以实现权利要求1至8任一项所述方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,计算机可执行指令促使处理器实现权利要求1至8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011389134.9A CN112416598B (zh) | 2020-12-01 | 2020-12-01 | 消息处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011389134.9A CN112416598B (zh) | 2020-12-01 | 2020-12-01 | 消息处理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112416598A CN112416598A (zh) | 2021-02-26 |
CN112416598B true CN112416598B (zh) | 2023-07-25 |
Family
ID=74829583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011389134.9A Active CN112416598B (zh) | 2020-12-01 | 2020-12-01 | 消息处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112416598B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114422466B (zh) * | 2022-01-20 | 2024-06-07 | 深圳市元征科技股份有限公司 | 离线消息处理方法、装置、电子设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102916963A (zh) * | 2012-10-26 | 2013-02-06 | 中国人民解放军信息工程大学 | 一种数据安全交换方法、装置、节点及*** |
CN103891316A (zh) * | 2012-09-21 | 2014-06-25 | 华为技术有限公司 | 分布式移动性管理的会话方法、装置及*** |
NL2011999C2 (en) * | 2013-12-20 | 2015-06-26 | Ubiqu B V | Methods, an online object, a web-based message exchange server, a mobile device, a target offline object, a network and a computer program product. |
CN105099722A (zh) * | 2014-05-15 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 一种消息发送端、消息接收端和群定向通信方法及*** |
CN106790454A (zh) * | 2016-12-07 | 2017-05-31 | 努比亚技术有限公司 | 离线消息推送方法与装置 |
CN106911714A (zh) * | 2017-04-05 | 2017-06-30 | 南京南瑞集团公司 | Android设备基于进程间通信的移动应用单点登录方法 |
CN109639564A (zh) * | 2018-12-12 | 2019-04-16 | 金瓜子科技发展(北京)有限公司 | 一种获取离线消息的方法、装置及计算机可读存储介质 |
CN110198351A (zh) * | 2019-05-29 | 2019-09-03 | 深圳前海微众银行股份有限公司 | 离线消息的存储方法、装置、服务端及可读存储介质 |
CN110787455A (zh) * | 2019-11-29 | 2020-02-14 | 网易(杭州)网络有限公司 | 游戏中玩家组队方法、装置及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150142572A1 (en) * | 2011-12-16 | 2015-05-21 | Siddharth Vijayakrishnan | Serving content based on online registration and offline messages |
US20190026461A1 (en) * | 2017-07-20 | 2019-01-24 | Barracuda Networks, Inc. | System and method for electronic messaging threat scanning and detection |
-
2020
- 2020-12-01 CN CN202011389134.9A patent/CN112416598B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103891316A (zh) * | 2012-09-21 | 2014-06-25 | 华为技术有限公司 | 分布式移动性管理的会话方法、装置及*** |
CN102916963A (zh) * | 2012-10-26 | 2013-02-06 | 中国人民解放军信息工程大学 | 一种数据安全交换方法、装置、节点及*** |
NL2011999C2 (en) * | 2013-12-20 | 2015-06-26 | Ubiqu B V | Methods, an online object, a web-based message exchange server, a mobile device, a target offline object, a network and a computer program product. |
CN105099722A (zh) * | 2014-05-15 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 一种消息发送端、消息接收端和群定向通信方法及*** |
CN106790454A (zh) * | 2016-12-07 | 2017-05-31 | 努比亚技术有限公司 | 离线消息推送方法与装置 |
CN106911714A (zh) * | 2017-04-05 | 2017-06-30 | 南京南瑞集团公司 | Android设备基于进程间通信的移动应用单点登录方法 |
CN109639564A (zh) * | 2018-12-12 | 2019-04-16 | 金瓜子科技发展(北京)有限公司 | 一种获取离线消息的方法、装置及计算机可读存储介质 |
CN110198351A (zh) * | 2019-05-29 | 2019-09-03 | 深圳前海微众银行股份有限公司 | 离线消息的存储方法、装置、服务端及可读存储介质 |
CN110787455A (zh) * | 2019-11-29 | 2020-02-14 | 网易(杭州)网络有限公司 | 游戏中玩家组队方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112416598A (zh) | 2021-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100545874B1 (ko) | 복수의 그룹에 속하는 로케이션 서버를 이용한 사용자의로그 정보 관리 방법 및 시스템 | |
US9948588B2 (en) | System and method for detecting unwanted content | |
US8499050B2 (en) | Method, apparatus, and system for automatically replying to mail | |
US7882183B2 (en) | Managing a response to an email by a hidden email recipient | |
US8032601B2 (en) | System and method for client-based instant message monitoring for off-line users | |
EP3061215A1 (en) | Conditional delivery of electronic messages | |
US7685241B2 (en) | Mapping online service user ID to portal user ID | |
JP2004094602A (ja) | クライアント管理方法及び装置 | |
EP2586171A1 (en) | Method, server and system for granting temporary access to electronic content | |
CN104245069A (zh) | 管理装置、控制方法和计算机可读记录介质 | |
CN113678411B (zh) | 撤回消息链内的消息 | |
CN110971984B (zh) | 一种连麦方法、装置、***、设备及存储介质 | |
US20080016162A1 (en) | Method and Device for Monitoring the Traffic of Electronic Messages | |
CN112416598B (zh) | 消息处理方法、装置、电子设备及存储介质 | |
CN111130986A (zh) | 消息发送方法、装置、设备及存储介质 | |
US20080208982A1 (en) | Method and system for providing status information relating to a relation between a plurality of participants | |
CN112838980B (zh) | 一种消息处理方法、***、装置、电子设备及存储介质 | |
US20170104698A1 (en) | Instant Messaging | |
US8024408B1 (en) | System and method for managing a computer-mediated discussion forum | |
US9432317B2 (en) | Survey sampling prior to message publishing | |
CN113014404B (zh) | 一种消息传输方法、装置、服务器以及第二客户端 | |
JP4536708B2 (ja) | クライアント管理方法及び装置及び記録媒体 | |
JP2018081531A (ja) | サーバー、メッセージグループの管理システム、メッセージグループの管理方法 | |
CN111405348A (zh) | 媒体播放的方法、设备和计算机存储介质 | |
US8473599B2 (en) | Communication network list management sending updated member data from a provisioning system to a list manager and then to an application server |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |