一种消息锁处理方法及装置制造方法及图纸

技术编号:19232518 阅读:15 留言:0更新日期:2018-10-23 23:15
本发明专利技术公开了一种消息锁处理方法及装置,该方法包括:监控所述游戏客户端与游戏服务端之间是否发生断线重连;如果是,对所述游戏客户端的本地数组加锁,触发从所述本地数组中取出第一套接字socket消息的事件中断,其中,所述第一socket消息为在所述游戏客户端与所述游戏服务端之间发生断线重连之前存入所述本地数组的至少一个socket消息;在所述游戏客户端与所述游戏服务端之间重新处于连接状态下,若监控到所述游戏客户端的游戏界面重新打开,对所述本地数组解锁;向所述本地数组中存入第二socket消息,触发对从所述本地数组中取出所述第一socket消息和所述第二socket消息进行处理的事件执行。从而本发明专利技术解决了现有技术中断线重连后游戏过程卡住的技术问题。

A method and device for processing message lock

The invention discloses a message lock processing method and a device, which comprises: monitoring whether a broken line reconnection occurs between the game client and the game server; if so, locking the local array of the game client triggers an event interruption to extract the first socket message from the local array, and The first socket message is at least one socket message stored in the local array before a disconnection and reconnection occurs between the game client and the game server; if the game interface of the game client is monitored, the game client is reconnected between the game client and the game server. The local array is reopened, unlocked, and a second socket message is stored in the local array, triggering the execution of an event that processes the first socket message and the second socket message taken out of the local array. Thus, the invention solves the technical problem that the game process is stuck after the interruption of the existing technology is reconnected.

【技术实现步骤摘要】
一种消息锁处理方法及装置
本专利技术涉及数据传输领域,尤其涉及一种消息锁处理方法及装置。
技术介绍
Android设备与服务端的通信方式主要有两种,一种是HTTP通信,另一种是socket(套接字)通信。两者的最大差异在于,HTTP连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务端发送请求后,服务端才能向客户端返回数据。而socket通信则是在双方建立起连接后就可以直接进行数据的传输,在连接时可实现信息的主动推送,而不需要每次由客户端向服务端发送请求。在程序内部提供了与外界通信的端口,即端口通信。通过建立socket连接,可为通信双方的数据传输传提供通道。socket通信有数据丢失率低,使用简单且易于移植的优点。在游戏领域,游戏客户端会因为断网等原因发生与游戏服务端之间的断线重连、游戏界面也会在断线重连成功后重新打开,而游戏界面的重新打开需要耗费一定时间,在游戏界面未重新打开之前,游戏服务端可能会下发新的socket消息,触发游戏客户端从本地数组中取出socket消息进行处理,从而,由于游戏界面还未打开,当前处理的socket消息会被浪费掉,而游戏过程中的socket消息是一环扣一环的,进而导致后续的socket消息也无法被处理,进而导致游戏过程卡住。
技术实现思路
本专利技术实施例通过提供一种消息锁处理方法及装置,解决了断线重连后游戏过程卡住的技术问题。第一方面,本专利技术实施例提供一种消息锁处理方法,应用于游戏客户端,其特征在于,包括:监控所述游戏客户端与游戏服务端之间是否发生断线重连;如果是,对所述游戏客户端的本地数组加锁,触发从所述本地数组中取出第一套接字socket消息的事件中断,其中,所述第一socket消息为在所述游戏客户端与所述游戏服务端之间发生断线重连之前存入所述本地数组的至少一个socket消息;在所述游戏客户端与所述游戏服务端之间重新处于连接状态下,若监控到所述游戏客户端的游戏界面重新打开,对所述本地数组解锁;向所述本地数组中存入第二socket消息,触发对从所述本地数组中取出所述第一socket消息和所述第二socket消息进行处理的事件执行。可选的,在监控所述游戏客户端与游戏服务端之间是否发生断线重连之后,还包括如下步骤:步骤a、在所述游戏客户端与所述游戏服务端之间发生断线重连之前,若接收到当前socket消息,存储所述当前socket消息至所述本地数组;步骤b、从所述本地数组中取出所述当前socket消息进行处理,基于处理得到的游戏数据进行游戏过程;重复执行所述步骤a至步骤b,直至所述游戏客户端与所述游戏服务端之间发生所述断线重连。可选的,所述从所述本地数组中取出所述当前socket消息进行处理,包括:判断所述本地数组中当前是否存在未处理的socket消息;如果是,从所述本地数组中取出所述未处理的socket消息进行处理,否则将用于从所述本地数组中取出socket消息进行处理的进程处于阻塞状态,直到向所述本地数组中存入所述当前socket消息,从所述本地数组中取出所述当前socket消息进行处理。可选的,所述向所述本地数组中存入第二socket消息,触发对从所述本地数组中取出所述第一socket消息和所述第二socket消息进行处理的事件执行,包括:向所述游戏服务端发送空消息,所述空消息用于触发所述游戏服务端向所述游戏客户端反馈所述第二socket消息;接收并存储所述第二socket消息至所述本地数组;以存储所述第二socket消息至所述本地数组的事件,触发对从所述本地数组中顺次取出所述第一socket消息和所述第二socket消息进行处理的事件执行。可选的,所述向所述本地数组中存入第二socket消息,触发对从所述本地数组中取出所述第一socket消息和所述第二socket消息进行处理的事件执行,包括:等待所述游戏服务端主动下发所述第二socket消息;将所述游戏服务端主动下发的所述第二socket消息存储至所述本地数组;以存储所述第二socket消息至所述本地数组的事件,触发对从所述本地数组中顺次取出所述第一socket消息和所述第二socket消息进行处理的事件执行。可选的,所述接收到当前socket消息,包括:接收来自所述游戏服务端的N个二进制消息块,其中,所述N个二进制消息块为所述游戏服务端下发的原始socket消息被拆分为所述N个二进制消息块,将所述N个二进制消息块传送至所述游戏客户端,N为大于或等于1的整数;将所述N个二进制消息块拼接为二进制完整消息;解析所述二进制完整消息,获得所述当前socket消息。可选的,所述原始socket消息包括消息头和消息体,所述消息头中指明消息体长度,所述原始socket消息被拆分后,所述消息体长度携带在所述N个二进制消息块的第一个二进制消息块中;所述将所述N个二进制消息块拼接为二进制完整消息体,包括:接收来自所述游戏服务端的所述N个二进制消息块的第一个二进制消息块;从所述N个二进制消息块的第一个二进制消息块中识别出所述消息体长度;根据所述消息体长度,接收所述N个二进制消息块中在第一个二进制消息块之后的N-1个二进制消息块;拼接所述N个二进制消息块,得到所述二进制完整消息。第二方面,本专利技术实施例提供一种消息锁处理装置,应用于游戏客户端,包括:断线重连单元,用于监控所述游戏客户端与游戏服务端之间是否发生断线重连;加锁单元,用于如果所述断线重连单元的监控结果为是,对所述游戏客户端的本地数组加锁,触发从所述本地数组中取出第一套接字socket消息的事件中断,其中,所述第一socket消息为在所述游戏客户端与所述游戏服务端之间发生断线重连之前存入所述本地数组的至少一个socket消息;数组解锁单元,用于在所述游戏客户端与所述游戏服务端之间重新处于连接状态下,若监控到所述游戏客户端的游戏界面重新打开,对所述本地数组解锁;消息处理触发单元,用于向所述本地数组中存入第二socket消息,触发对从所述本地数组中取出所述第一socket消息和所述第二socket消息进行处理的事件执行。可选的,所述装置还包括:消息处理单元,用于执行如下步骤:步骤a、在所述游戏客户端与所述游戏服务端之间发生断线重连之前,若接收到当前socket消息,存储所述当前socket消息至所述本地数组;步骤b、从所述本地数组中取出所述当前socket消息进行处理,基于处理得到的游戏数据进行游戏过程;重复执行所述步骤a至步骤b,直至所述游戏客户端与所述游戏服务端之间发生所述断线重连。可选的,所述消息处理单元,具体包括:判断子单元,用于判断所述本地数组中当前是否存在未处理的socket消息;消息处理执行子单元,用于如果所述判断子单元的判断结果是,从所述本地数组中取出所述未处理的socket消息进行处理,否则将用于从所述本地数组中取出socket消息进行处理的进程处于阻塞状态,直到向所述本地数组中存入所述当前socket消息,从所述本地数组中取出所述当前socket消息进行处理。可选的,所述消息处理触发单元,包括:消息发送子单元,用于向所述游戏服务端发送空消息,所述空消息用于触发所述游戏服务端向所述游戏客户端反馈所述第二socket消息;原始socket消息存储本文档来自技高网...

【技术保护点】
1.一种消息锁处理方法,应用于游戏客户端,其特征在于,包括:监控所述游戏客户端与游戏服务端之间是否发生断线重连;如果是,对所述游戏客户端的本地数组加锁,触发从所述本地数组中取出第一套接字socket消息的事件中断,其中,所述第一socket消息为在所述游戏客户端与所述游戏服务端之间发生断线重连之前存入所述本地数组的至少一个socket消息;在所述游戏客户端与所述游戏服务端之间重新处于连接状态下,若监控到所述游戏客户端的游戏界面重新打开,对所述本地数组解锁;向所述本地数组中存入第二socket消息,触发对从所述本地数组中取出所述第一socket消息和所述第二socket消息进行处理的事件执行。

【技术特征摘要】
1.一种消息锁处理方法,应用于游戏客户端,其特征在于,包括:监控所述游戏客户端与游戏服务端之间是否发生断线重连;如果是,对所述游戏客户端的本地数组加锁,触发从所述本地数组中取出第一套接字socket消息的事件中断,其中,所述第一socket消息为在所述游戏客户端与所述游戏服务端之间发生断线重连之前存入所述本地数组的至少一个socket消息;在所述游戏客户端与所述游戏服务端之间重新处于连接状态下,若监控到所述游戏客户端的游戏界面重新打开,对所述本地数组解锁;向所述本地数组中存入第二socket消息,触发对从所述本地数组中取出所述第一socket消息和所述第二socket消息进行处理的事件执行。2.如权利要求1所述的消息锁处理方法,其特征在于,在监控所述游戏客户端与游戏服务端之间是否发生断线重连之后,还包括如下步骤:步骤a、在所述游戏客户端与所述游戏服务端之间发生断线重连之前,若接收到当前socket消息,存储所述当前socket消息至所述本地数组;步骤b、从所述本地数组中取出所述当前socket消息进行处理,基于处理得到的游戏数据进行游戏过程;重复执行所述步骤a至步骤b,直至所述游戏客户端与所述游戏服务端之间发生所述断线重连。3.如权利要求2所述的消息锁处理方法,其特征在于,所述从所述本地数组中取出所述当前socket消息进行处理,包括:判断所述本地数组中当前是否存在未处理的socket消息;如果是,从所述本地数组中取出所述未处理的socket消息进行处理,否则将用于从所述本地数组中取出socket消息进行处理的进程处于阻塞状态,直到向所述本地数组中存入所述当前socket消息,从所述本地数组中取出所述当前socket消息进行处理。4.如权利要求1-3中任一项所述的消息锁处理方法,其特征在于,向所述本地数组中存入第二socket消息,触发对从所述本地数组中取出所述第一socket消息和所述第二socket消息进行处理的事件执行,包括:向所述游戏服务端发送空消息,所述空消息用于触发所述游戏服务端向所述游戏客户端反馈所述第二socket消息;接收并存储所述第二socket消息至所述本地数组;以存储所述第二socket消息至所述本地数组的事件,触发对从所述本地数组中顺次取出所述第一socket消息和所述第二socket消息进行处理的事件执行。5.如权利要求1-3中任一项所述的消息锁处理方法,其特征在于,所述向所述本地数组中存入第二socket消息,触发对从所述本地数组中取出所述第一socket消息和所述第二socket消息进行处理的事件执行,包括:等待所...

【专利技术属性】
技术研发人员:孟志兵张文明陈少杰
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北,42

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

1