维持长连接的方法和装置的制造方法

文档序号:9330601阅读:299来源:国知局
维持长连接的方法和装置的制造方法
【技术领域】
[0001]本发明涉及通信领域,特别涉及一种维持长连接的方法和装置。
【背景技术】
[0002]传输控制协议(Transmiss1n Control Protocol,简称:TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。长连接为连接中的一种,通常用于操作频繁、点对点的通讯,如客户端与服务端之间的即时数据通信。长连接只需建立一次连接,且在连接成功后,一般会维持较长时间,连接双方会利用该连接进行多次通信,每次通信后该连接都不会断开,从而避免由于频繁的建立连接而造成资源的浪费。
[0003]在长连接的维持过程中,如果较长时间没有数据包通信,网络运营商或者网络中转设备会将当前连接变为不可用状态,导致连接任意一方想再次进行通信时无法成功发送和接收数据包,造成长连接的僵死状态,即没有维持住长连接。
[0004]为了避免长连接僵死,目前的方法是由客户端每隔一段周期通过当前的长连接向服务端发送数据包,以保持当前长连接一直存在报文通信,从而避免长连接僵死。但是,该方法存在如下问题:有些客户端出于性能和安全等因素的考虑,限制了客户端在后台周期性唤醒自己并发送数据包的能力,周期过长且无法修改仍然会导致长连接僵死的情况发生。

【发明内容】

[0005]有鉴于此,本发明实施例提供了一种维持长连接的方法和装置,以防止服务端与客户端之间的长连接僵死。所述技术方案如下:
[0006]—方面,提供了一种维持长连接的方法,包括:
[0007]服务端与客户端建立长连接;
[0008]所述服务端获取指定的时间间隔;
[0009]所述服务端每隔所述时间间隔通过所述长连接发送数据包给所述客户端,以维持所述长连接。
[0010]其中,所述方法还包括:
[0011]当所述服务端检测到所述长连接已断开时,停止发送所述数据包给所述客户端。
[0012]其中,所述方法还包括:
[0013]所述服务端预先为不同的网络类型设置不同的时间间隔。
[0014]其中,所述服务端获取指定的时间间隔,包括:
[0015]所述服务端确定所述长连接当前所处的网络类型,根据所述网络类型获取对应的时间间隔。
[0016]其中,所述方法还包括:
[0017]所述服务端接收所述客户端定期通过所述长连接发送的数据包。
[0018]另一方面,提供了一种维持长连接的装置,包括:
[0019]建立模块,用于与客户端建立长连接;
[0020]获取模块,用于获取指定的时间间隔;
[0021]维持模块,用于每隔所述时间间隔通过所述长连接发送数据包给所述客户端,以维持所述长连接。
[0022]其中,所述维持模块还用于:
[0023]当所述服务端检测到所述长连接已断开,则停止发送所述数据包给所述客户端。
[0024]其中,所述装置还包括:
[0025]设置模块,用于预先为不同的网络类型设置不同的时间间隔。
[0026]其中,所述获取模块包括:
[0027]获取单元,用于确定所述长连接当前所处的网络类型,根据所述网络类型获取对应的时间间隔。
[0028]其中,所述装置还包括:
[0029]接收模块,用于接收所述客户端定期通过所述长连接发送的数据包。
[0030]本发明实施例提供的技术方案带来的有益效果是,通过服务端与客户端建立长连接,所述服务端获取指定的时间间隔,每隔所述时间间隔通过所述长连接发送数据包给所述客户端,以维持服务端与客户端之间的长连接,避免了长连接僵死,而且,不依赖客户端发送数据包来维持长连接,降低了对客户端的要求,可以适用于各种类型的客户端,避免了由于客户端的能力受限而导致长连接僵死。另外,由服务端定期主动向客户端推送数据包的方式,时间间隔可以根据需要任意修改,更方便灵活、易于控制。
【附图说明】
[0031]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0032]图1是本发明一实施例提供的维持长连接的方法流程图;
[0033]图2是本发明另一实施例提供的维持长连接的方法流程图;
[0034]图3是本发明另一实施例提供的维持长连接的方法流程图;
[0035]图4是本发明另一实施例提供的一种维持长连接的装置结构图;
[0036]图5是本发明另一实施例提供的一种维持长连接的装置结构图;
[0037]图6是本发明另一实施例提供的服务器结构图。
【具体实施方式】
[0038]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0039]参见图1,本发明一实施例提供了一种维持长连接的方法,包括:
[0040]101:服务端与客户端建立长连接。
[0041]本实施例中,长连接通常是由客户端发起建立的,服务端为被动方,在收到客户端的请求后,服务端会与客户端建立长连接,可以通过握手报文来建立,此处不做过多说明。
[0042]102:该服务端获取指定的时间间隔。
[0043]其中,所述指定的时间间隔可以由服务端预先设置,服务端可以根据需要设置,该时间间隔的具体数值本实施例不做限制,如可以为4分钟、4.5分钟、5分钟或者10分钟等等。
[0044]103:该服务端每隔该时间间隔通过该长连接发送数据包给该客户端,以维持该长连接。
[0045]其中,如果长连接在一定时间内没有报文通信,则网络运营商或者网络中转设备会将当前连接变为不可用状态,造成长连接的僵死状态,因此,服务端每隔该时间间隔通过该长连接发送数据包给客户端,可以保证该长连接上有数据包通信,从而能够维持该长连接。
[0046]本实施例中,服务端发送的是数据包,而不是保活报文。在TCP协议提供的保活机制中,通过定期发送保活报文可以维持长连接,但是,该保活机制中发送保活报文的周期是2个小时且固定不变,该周期无法根据需要更改,不能控制。而本实施例中,不仅由服务端主动推送报文,且推送给客户端的报文不是基于保活机制的控制报文即保活报文,而是基于数据传输的数据包,因此,无需受保活机制中固定周期的限制,服务端可以根据需要任意修改发送数据包的时间间隔,从而不仅能够达到维持长连接的目的,而且能够达到灵活控制的效果。
[0047]本实施例中,可选的,该方法还包括:
[0048]当该服务端检测到该长连接已断开时,停止发送该数据包给该客户端。
[0049]本实施例中,可选的,该方法还包括:
[0050]该服务端预先为不同的网络类型设置不同的时间间隔。
[0051 ] 本实施例中,可选的,该服务端获取指定的时间间隔,包括:
[0052]该服务端确定该长连接当前所处的网络类型,根据该网络类型获取对应的时间间隔。
[0053]本实施例中,可选的,该方法还包括:
[0054]该服务端接收该客户端定期通过该长连接发送的数据包。
[0055]本实施例提供的上述方法,通过服务端与客户端建立长连接,所述服务端获取指定的时间间隔,每隔所述时间间隔通过所述长连接发送数据包给所述客户端,以维持服务端与客户端之间的长连接,避免了长连接僵死,而且,不依赖客户端发送数据包来维持长连接,降低了对客户端的要求,可以适用于各种类型的客户端,避免了由于客户端的能力受限而导致长连接僵死。另外,由服务端定期主动向客户端推送数据包的方式,时间间隔可以根据需要任意修改,更方便灵活、易于控制。
[0056]参见图2,本发明另一实施例提供了一种维持长连接的方法,包括:
[0057]201:服务端预先为不同的网络类型设置不同的时间间隔。
[0058]本实施例中,网络类型是指根据不同的网络运营商而将网络划分的各种类型,可以有多种,包括但不限于:移动网络或者联通网络等等。
[0059]其中,服务端可以根据不同的网络类型来设置不同的时间间隔,如为移动网络设置的时间间隔为4.5分钟,为联通网络设置的时间间隔为10分钟,本实施例对具体数值不做限定。
[0060]202:该服务端与客户端建立长连接。
[0061]203:该服务端确定该长连接当前所处的网络类型,根据该网络类型获取对应的时间间隔。
[0062]204:该服务端每隔该时间间隔通过该长连接发送数据包给该客户端,以维持该长连接。
[0063]其中,该数据包可以为心跳包,心跳包就是在客户端和服务端之间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包。通过发送心跳包可以保证所述长连接上有报文通信,从而可以维持该长连接。
[0064]另外,服务端可以具体地启动一个计时器,在建立长连接之后就启动该计时器进行计时,计时达到所述时间间隔时就触发数据包的发送,并重新开始计时,直到该长连接断开则停止该计时器。
[0065]本实施例中,可选的,上述方法还可以包括:
[0066]当该服务端检测到该长连接已断开时,停止发送该数据包给该客户端。
[0067]其中,服务端可以采用多种方式来检测该长连接是否已断开,包括但不限于:在发送数据包后指定时间内客户端无应答,或者,在发送数据包后客户端返回错误消息等等,本实施例对此不做具体限定。
[0068]本实施例提供的上述方法,通过服务端与客户端建立长连接,所述服务端根据长连接当前所处的网络类型获取对应的时间间隔,每隔所述时间间隔通过所述长连接发送数据包给所述客户端,以维持服务端与客户端之间的长连接,避免了长连接僵死,而且,不依赖客户端发送数据包来维持长连接,降低了对客户端的要求,可以适用于各种类型的客户端,避免了由于客户端的能力受限而导致长连接僵死。另外,由服务端定期主动向客户端推送数据包的方式,时间间隔可以根据需要任意修改,更方便灵活、易于控制。
[0069]参见图3,本发明另一实施例提供了一种维持长连接的方法,包括:
[0070]301:服务端与客户端建立长连接。
[0071]302:该服务端获取指定的时间间隔。
[0072]其中,该服务端可以预先为不同的网络类型设置不同的时间间隔,则本步骤可以具体包括:
[0073]该服务端确定
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1