一种客户端与服务器连接状态的检测方法与流程

文档序号:12865889阅读:2811来源:国知局

本发明属于通信技术领域,特别涉及一种检测客户端与服务器之间连接状态的方法。



背景技术:

在cs架构的程序中,服务器主要提供数据管理、数据共享、数据以及系统维护和并发控制客户端。客户端需要针对用户具体的业务与服务器建立连接,在客户端与服务器连接前或者连接中,如果连接中断的话将导致业务处理失败,造成资源的浪费,更严重者可能导致客户端阻塞崩溃。

针对上述情况,常用的方式是客户端定时向服务器发送心跳帧,以确认客户端是否与服务器保持连接,然而,定时发送心跳帧会出现一个问题,例如客户端每隔20秒向服务器发送一次心跳帧确保在线,如果在确认连接后断开了连接,这将造成客户端有一个20秒的错误状态(客户端认为在线,但实际已经断线),需要等待20秒后状态才能正确。在这个阶段用户如果操作客户端,很容易因为状态不对造成阻塞或者崩溃的问题。

如果将心跳帧的发送间隔缩短,例如由20秒发送修改为5秒发送,则频繁的发送容易造成资源的竞争和浪费,增加系统出错的概率。

如果将心跳帧的发送时间延长,则状态的更新延时更加严重。



技术实现要素:

本发明的目的,在于提供一种客户端与服务器连接状态的检测方法,其可在减少资源浪费与消除连接延时之间达成平衡。

为了达成上述目的,本发明的解决方案是:

一种客户端与服务器连接状态的检测方法,判断客户端的状态属性是否处于空闲状态,若客户端处于空闲状态,则定时发送心跳帧;若客户端与服务器正在数据交互中,则即时发送心跳帧。

上述定时发送心跳帧的具体内容是:客户端定时向服务器发送心跳帧,并判断是否在指定时间内收到服务器反馈的消息回复,若收到,则表示客户端与服务器连接正常;若未收到,则客户端等待设定时间后向服务器重新发送心跳帧。

上述客户端等待设定时间后向服务器重新发送心跳帧,客户端在指定时间内收到服务器的消息回复,则表示客户端与服务器连接正常,等待下一次定时发送心跳帧;若客户端在指定时间内未收到服务器的消息回复,则判定客户端和服务器连接中断,再定时自动重连服务器。

上述客户端与服务器正在数据交互中,则即时发送心跳帧的具体内容是:若客户端与服务器正在数据交互中,则客户端实时向服务器发送心跳帧,并判断是否在指定时间内收到服务器反馈的消息回复,若收到,则表示客户端与服务器通信正常,然后开始客户端与服务器的数据交互;若未收到,则客户端等待设定时间后向服务器重新发送心跳帧。

上述客户端等待设定时间后向服务器重新发送心跳帧,客户端在指定时间内收到服务器的消息回复,则表示客户端与服务器连接正常,等待下一次定时发送心跳帧;若客户端在指定时间内未收到服务器的消息回复,则判定客户端和服务器连接中断,再定时自动重连服务器。

采用上述方案后,本发明在客户端空闲阶段定时发送心跳帧,而在需要交互时即时发送心跳帧,这样,在空闲阶段能够节省资源,而需要交互时则能够消除连接延时,防止因为延时而导致的服务器和客户端获取状态不一致的情况。本发明消除了心跳帧定时发送导致的延时问题,解决频繁发送心跳帧导致资源的浪费和竞争,在功能上能够减少资源浪费和消除延时平衡,不需要为了哪个功能牺牲另一个,在整体结构上简洁明了,不需要增加系统的复杂性。

附图说明

图1是本发明的原理图。

具体实施方式

以下将结合附图,对本发明的技术方案及有益效果进行详细说明。

如图1所示,本发明提供一种客户端与服务器连接状态的检测方法,包括如下步骤:

步骤1,首先判断客户端的状态属性是否处于空闲状态(在客户端接入服务器的时候默认初始状态属性为:未与服务器通信,空闲;当客户端和服务器数据交互时,客户端状态属性为:与服务器通信中,繁忙),若客户端处于空闲状态,则转步骤2,若客户端与服务器正在数据交互中,则转步骤4;

步骤2,当客户端处于空闲状态,与服务器没有业务上的交互需求时,采用定时发送心跳帧的方式:即客户端定时向服务器发送一条特定格式的消息(即心跳帧),然后进入一个定时等待服务器回复操作;若客户端与服务器连接正常,则服务器会在收到消息后,向客户端反馈连接正常的回复,当客户端在指定时间内收到该回复时,确认两者连接正常,并将客户端的状态属性更新为:未与服务器通信,空闲,再返回步骤1;若客户端与服务器连接异常,则客户端在指定时间内不会接收到服务器的消息回复,则转步骤3;

步骤3,客户端发出心跳帧后,在指定时间内未接收到服务器的消息回复,则在到达指定时间时,客户端会在设定时间后(可设为1s)向服务器重新发送心跳帧,以确认客户端和服务器的通信情况(因为可能第一次发送的心跳帧产生了丢包现象)。若重发心跳帧后,客户端在指定时间内成功收到服务器的应答消息,则确认客户端与服务器连接正常,将客户端的状态属性更新为:未与服务器通信,空闲,再返回步骤1;若重发心跳帧后,在指定时间内仍未能收到服务器的应答消息,则说明客户端和服务器通信出现异常,更新客户端的属性状态为:与服务器连接中断,同时客户端会每隔设定时间(如5s)自动重连服务器,若客户端重新连接服务器成功,则重新进入步骤1;

步骤4,当客户端需要与服务器进行数据交互时,客户端首先向服务器发送心跳帧,询问与服务器的连接状态。若客户端在发送心跳帧后的指定时间内收到服务器的应答,证明客户端与服务器通信正常,然后开始客户端与服务器的数据交互,同时更新客户端的状态属性为:与服务器通信中,繁忙;若客户端在发送心跳帧后,指定时间内未收到服务器的应答消息,则转步骤5;

步骤5,客户端发送心跳帧后,若在指定时间内未收到服务器的应答消息,客户端会在设定时间后(如1s)重发一次心跳帧,确认客户端和服务器的通信情况(因为可能第一次发送的心跳帧产生了丢包现象)。若重发心跳帧后,客户端成功收到服务器的应答消息,则证明客户端与服务器通信正常,开始数据交互,同时更新客户端的状态属性为:与服务器通信中,繁忙;若重发心跳帧后仍未能在指定时间内收到服务器的应答消息,则说明客户端和服务器通信出现异常,更新客户端的属性状态为:与服务器连接中断,同时客户端会每隔设定时间(如5s)自动重连服务器;若客户端重新连接服务器成功,则重新进入步骤1。

以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。



技术特征:

技术总结
本发明公开一种客户端与服务器连接状态的检测方法,判断客户端的状态属性是否处于空闲状态,若客户端处于空闲状态,则客户端定时向服务器发送心跳帧,并判断是否在指定时间内收到服务器反馈的消息回复;若客户端与服务器正在数据交互中,则客户端实时向服务器发送心跳帧,并判断是否在指定时间内收到服务器反馈的消息回复。此种检测方法可在减少资源浪费与消除连接延时之间达成平衡。

技术研发人员:邱志斌;涂高元;黄东强;郭永兴;陆云燕;陈雅贤
受保护的技术使用者:厦门天锐科技股份有限公司
技术研发日:2017.08.21
技术公布日:2017.11.03
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1