事件消息的处理方法、装置、电子设备及可读存储介质制造方法及图纸

技术编号:24508775 阅读:50 留言:0更新日期:2020-06-17 03:24
本发明专利技术实施例提供了一种事件消息的处理方法、装置、电子设备及可读存储介质,应用于游戏服务器,包括:在接收到的事件消息写入与游戏房间关联的消息队列中,并且从消息队列中读取最先写入的待处理事件消息,以及对待处理事件消息进行处理,得到待处理事件消息对应的响应消息,以及向属于游戏房间的游戏客户端发送响应消息。应用本发明专利技术实施例提供的技术方案,可以将属于一个游戏房间的多个游戏客户端发送的事件消息写入到针对该游戏房间预先创建的消息队列中,再对这些事件消息逐个进行处理,将处理后得到的响应消息发送到上述多个游戏客户端,驱动这多个游戏客户端更新游戏画面,取代了加锁和解锁的操作,从而降低了游戏的时延。

Processing method, device, electronic equipment and readable storage medium of event message

【技术实现步骤摘要】
事件消息的处理方法、装置、电子设备及可读存储介质
本专利技术涉及产品应用
,特别是涉及一种事件消息的处理方法、装置、电子设备及可读存储介质。
技术介绍
对于多人实时互动游戏,游戏客户端发送一个交互指令,游戏服务器接收到该交互指令后,并对该交互指令进行响应处理,得到响应消息,将响应消息发送到客户端,以使客户端更新游戏画面。当多个游戏客户端针对一份公共的数据同时发送多个交互指令时,通常对这份公共的数据加互斥锁从而避免冲突。例如,当游戏客户端A和游戏客户端B同时请求修改同一份公共的数据时,游戏客户端A修改时可以对这份公共的数据加互斥锁,阻止游戏客户端B修改,当游戏客户端A加的互斥锁解除后,游戏客户端B才能继续修改这份公共的数据。但是,当同时修改这份公共的数据的游戏客户端数量较多时,处理过程中,需要多次执行加锁和解锁的操作,可能导致部分游戏客户端等待时间较长,影响游戏的时延等性能指标。
技术实现思路
本专利技术实施例的目的在于提供一种事件消息的处理方法、装置、电子设备及可读存储介质,用以解决多个游戏客户端同时发送事件消息时,响应时延大的问题。具体技术方案如下:第一方面,本专利技术实施例提供了一种事件消息的处理方法,应用于游戏服务器,包括:在接收到游戏客户端发送的事件消息后,将所述事件消息写入与所述游戏客户端所属游戏房间关联的消息队列中,所述事件消息为所述游戏客户端基于接收到的交互操作所生成的;按照所述消息队列中包含的各事件消息的写入顺序,从所述消息队列中读取最先写入的事件消息,作为待处理事件消息;对所述待处理事件消息进行处理,得到所述待处理事件消息对应的响应消息;向属于所述游戏房间的游戏客户端发送所述响应消息。进一步的,所述将所述事件消息写入与所述游戏客户端所属游戏房间关联的消息队列中,包括:判断写指针在与所述游戏客户端所属游戏房间关联的消息队列中所指向的位置中是否存在未被读取的事件消息;若不存在,将所述事件消息写入所述写指针指向的位置。进一步的,在若不存在,将所述事件消息写入所述写指针指向的位置之后,所述方法还包括:判断所述写指针指向的位置是否为所述消息队列的末位;若是,将所述写指针指向的位置变更为所述消息队列的首位;若否,将所述写指针指向的位置在所述消息队列中后移一位。进一步的,所述按照所述消息队列中包含的各事件消息的写入顺序,从所述消息队列中读取最先写入的事件消息,作为待处理事件消息,包括:判断读指针在所述消息队列中所指向的位置中是否存在未被读取的事件消息;若存在未被读取的事件消息,读取所述读指针所指向的位置中的事件消息,作为待处理事件消息。进一步的,在若存在未被读取的事件消息,读取所述读指针所指向的位置中的事件消息,作为待处理事件消息之后,所述方法还包括:判断所述读指针指向的位置是否为所述消息队列的末位;若是,将所述读指针指向的位置变更为所述消息队列的首位;若否,将所述读指针指向的位置在所述消息队列中后移一位。进一步的,所述方法还包括:若不存在未被读取的事件消息,等待预设时长后,再次执行所述判断读指针在所述消息队列中所指向的位置中是否存在未被读取的事件消息的步骤;或者若不存在未被读取的事件消息,将所述读指针指向的位置变更为另一个游戏房间的消息队列的首位。进一步的,在向属于所述游戏房间的游戏客户端发送所述响应消息之前,所述方法还包括:检测当前时刻与所述游戏房间的上一个同步时间的时间间隔是否大于等于预设时间间隔,其中,所述上一个同步时间为上一次向属于所述游戏房间的游戏客户端发送响应消息的时刻;若否,则等待,直到当前时刻与所述上一个同步时间的时间间隔大于等于预设时间间隔时,执行所述向属于所述游戏房间的游戏客户端发送所述响应消息的步骤。进一步的,所述将所述事件消息写入与所述游戏客户端所属游戏房间关联的消息队列中,包括:利用预先创建的消息派发线程将所述事件消息写入与所述游戏客户端所属游戏房间关联的消息队列中;所述按照所述消息队列中包含的各事件消息的写入顺序,从所述消息队列中读取最先写入的事件消息,作为待处理事件消息,包括:利用预先创建的消息消费线程按照所述消息队列中包含的各事件消息的写入顺序,从所述消息队列中读取最先写入的事件消息,作为待处理事件消息;所述对所述待处理事件消息进行处理,得到所述待处理事件消息对应的响应消息,包括:利用所述消息消费线程对所述待处理事件消息进行处理,得到所述待处理事件消息对应的响应消息;所述向属于所述游戏房间的游戏客户端发送所述响应消息,包括:利用预先创建的消息发送线程向属于所述游戏房间的游戏客户端发送所述响应消息。第二方面,本专利技术实施例提供了一种事件消息的处理装置,应用于游戏服务器,包括:写入单元,用于在接收到游戏客户端发送的事件消息后,将所述事件消息写入与所述游戏客户端所属游戏房间关联的消息队列中,所述事件消息为所述游戏客户端基于接收到的交互操作所生成的;读取单元,用于按照所述消息队列中包含的各事件消息的写入顺序,从所述消息队列中读取最先写入的事件消息,作为待处理事件消息;处理单元,用于对所述待处理事件消息进行处理,得到所述待处理事件消息对应的响应消息;发送单元,用于向属于所述游戏房间的游戏客户端发送所述响应消息。进一步的,所述写入单元,具体用于判断写指针在与所述游戏客户端所属游戏房间关联的消息队列中所指向的位置中是否存在未被读取的事件消息,并且若不存在,将所述事件消息写入所述写指针指向的位置。进一步的,所述写入单元,还用于判断所述写指针指向的位置是否为所述消息队列的末位,并且若是,将所述写指针指向的位置变更为所述消息队列的首位,以及若否,将所述写指针指向的位置在所述消息队列中后移一位。进一步的,所述读取单元,具体用于判断读指针在所述消息队列中所指向的位置中是否存在未被读取的事件消息,并且若存在未被读取的事件消息,读取所述读指针所指向的位置中的事件消息,作为待处理事件消息。进一步的,所述读取单元,还用于判断所述读指针指向的位置是否为所述消息队列的末位,并且若是,将所述读指针指向的位置变更为所述消息队列的首位,以及若否,将所述读指针指向的位置在所述消息队列中后移一位。进一步的,所述读取单元,还用于若不存在未被读取的事件消息,等待预设时长后,再次执行所述判断读指针在所述消息队列中所指向的位置中是否存在未被读取的事件消息的步骤;或者若不存在未被读取的事件消息,将所述读指针指向的位置变更为另一个游戏房间的消息队列的首位。进一步的,所述发送单元,还用于在向属于所述游戏房间的游戏客户端发送所述响应消息之前,检测当前时刻与所述游戏房间的上一个同步时间的时间间隔是否大于等于预设时间间隔,其中,所述上一个同步时间为上一次向属于所述游戏房间的游戏客户端发送响应消息的时刻,并且若否,则等待,直到当本文档来自技高网...

【技术保护点】
1.一种事件消息的处理方法,其特征在于,应用于游戏服务器,包括:/n在接收到游戏客户端发送的事件消息后,将所述事件消息写入与所述游戏客户端所属游戏房间关联的消息队列中,所述事件消息为所述游戏客户端基于接收到的交互操作所生成的;/n按照所述消息队列中包含的各事件消息的写入顺序,从所述消息队列中读取最先写入的事件消息,作为待处理事件消息;/n对所述待处理事件消息进行处理,得到所述待处理事件消息对应的响应消息;/n向属于所述游戏房间的游戏客户端发送所述响应消息。/n

【技术特征摘要】
1.一种事件消息的处理方法,其特征在于,应用于游戏服务器,包括:
在接收到游戏客户端发送的事件消息后,将所述事件消息写入与所述游戏客户端所属游戏房间关联的消息队列中,所述事件消息为所述游戏客户端基于接收到的交互操作所生成的;
按照所述消息队列中包含的各事件消息的写入顺序,从所述消息队列中读取最先写入的事件消息,作为待处理事件消息;
对所述待处理事件消息进行处理,得到所述待处理事件消息对应的响应消息;
向属于所述游戏房间的游戏客户端发送所述响应消息。


2.根据权利要求1所述的方法,其特征在于,所述将所述事件消息写入与所述游戏客户端所属游戏房间关联的消息队列中,包括:
判断写指针在与所述游戏客户端所属游戏房间关联的消息队列中所指向的位置中是否存在未被读取的事件消息;
若不存在,将所述事件消息写入所述写指针指向的位置。


3.根据权利要求2所述的方法,其特征在于,在若不存在,将所述事件消息写入所述写指针指向的位置之后,所述方法还包括:
判断所述写指针指向的位置是否为所述消息队列的末位;
若是,将所述写指针指向的位置变更为所述消息队列的首位;
若否,将所述写指针指向的位置在所述消息队列中后移一位。


4.根据权利要求1-3任一项所述的方法,其特征在于,所述按照所述消息队列中包含的各事件消息的写入顺序,从所述消息队列中读取最先写入的事件消息,作为待处理事件消息,包括:
判断读指针在所述消息队列中所指向的位置中是否存在未被读取的事件消息;
若存在未被读取的事件消息,读取所述读指针所指向的位置中的事件消息,作为待处理事件消息。


5.根据权利要求4所述的方法,其特征在于,在若存在未被读取的事件消息,读取所述读指针所指向的位置中的事件消息,作为待处理事件消息之后,所述方法还包括:
判断所述读指针指向的位置是否为所述消息队列的末位;
若是,将所述读指针指向的位置变更为所述消息队列的首位;
若否,将所述读指针指向的位置在所述消息队列中后移一位。


6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若不存在未被读取的事件消息,等待预设时长后,再次执行所述判断读指针在所述消息队列中所指向的位置中是否存在未被读取的事件消息的步骤;或者,
若不存在未被读取的事件消息,将所述读指针指向的位置变更为另一个游戏房间的消息队列的首位。


7.根据权利要求1-3或5-6任一项所述的方法,...

【专利技术属性】
技术研发人员:陈生飞
申请(专利权)人:北京奇艺世纪科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1