CN116800816A - 一种管理服务端与客户端大量长连接的方法 - Google Patents
一种管理服务端与客户端大量长连接的方法 Download PDFInfo
- Publication number
- CN116800816A CN116800816A CN202310824138.2A CN202310824138A CN116800816A CN 116800816 A CN116800816 A CN 116800816A CN 202310824138 A CN202310824138 A CN 202310824138A CN 116800816 A CN116800816 A CN 116800816A
- Authority
- CN
- China
- Prior art keywords
- client
- server
- long connection
- long
- proxy
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 23
- 238000004891 communication Methods 0.000 claims description 10
- 230000005540 biological transmission Effects 0.000 claims description 3
- 238000003066 decision tree Methods 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 claims description 2
- 238000005457 optimization Methods 0.000 claims description 2
- 238000012423 maintenance Methods 0.000 abstract description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Abstract
本发明公开了一种管理服务端与客户端大量长连接的方法,通过在客户端建立代理节点A和代理节点B,并且智能地断开和恢复AB之间的长连接的方法,显著的降低了客户端和服务端之间的网络资源占用,并且不用修改原有的客户端和服务端的长连接相关程序,降低了维护成本。
Description
技术领域
本发明涉及软件开发技术领域,尤其涉及一种管理服务端与客户端大量长连接的方法。
背景技术
随着互联网的快速发展,越来越多的应用程序需要在客户端和服务端之间建立长连接来实现实时通信。这些长连接占用了大量的网络资源,对计算机资源和网络性能造成了严重的影响。同时,由于客户端和服务端之间的长连接数量巨大,管理起来也变得越来越复杂。
目前,一些方案已经被提出来解决这个问题,例如使用连接池来管理连接等。但是这些方案并不能完全解决长连接占用网络资源和管理长连接的问题。
发明内容
本发明的目的就在于为了解决当单个客户端和服务端之间存在不止一条长连接,并且这些长连接会有段时间处于闲置状态的情景下的问题而提供一种管理服务端与客户端大量长连接的方法,本发明针对单个客户端和服务端存在多个长连接的情况下,当存在较多的非活动状态的长连接时,在不修改原有长连接的客户端和服务端的程序的情况下,有效地减低客户端和服务端之间的网络开销,提高并发的长连接的数量。
本发明通过以下技术方案来实现上述目的:
一种管理服务端与客户端大量长连接的方法,包括以下步骤:
S1、准备工作,确定客户端和服务端程序的代理节点程序、数据类型和数据格式,并确定重连策略;
S2、客户端与服务端各自建立建立代理节点,并在代理节点之间建立一个长连接;
S3、客户端向服务端建立长连接;
S4、长连接的连接状态管理与优化;
S5、代理节点之间开始数据传输。
进一步方案为,所述步骤1中,具体实施过程为:
S101.客户端和服务端程序各自编写对应的代理节点程序;
S102.确定客户端和服务端之间需要传输的数据类型和数据格式;
S103.确定代理节点A、B之间的长连接的通信协议以及相关的加密、解密算法;
S104.确定代理节点A、B之间的长连接的超时时限;
S105.确定代理节点A、B之间的长连接的重连策略。
进一步方案为,步骤2中,具体实施过程为:
S201.在客户端建立一个代理节点,定义为NodeA,该代理节点负责和客户端之间的长连接通信;
S202.在服务端建立相应的代理节点,定义为NodeB,该代理节点负责和服务端之间的长连接通信;
S203.在NodeA和NodeB之间建立一个长连接,定义为LinkAB。
进一步方案为,所述步骤3中,具体实施过程为:
S301.客户端代理节点A建立一个长连接;
S302.代理节点A通过S203所述的长连接LinkAB告知代理节点B客户端发起的长连接的相关信息;
S303.代理节点A建立连接到代理节点B的长连接,并把S301所述的长连接的内容转发到该长连接中;
S304.代理节点B根据步骤S303所述的信息,建立和服务端程序之间的长连接,S303所述的长连接的内容转发到该长连接中。
进一步方案为,所述步骤4中,具体实施过程为:
S401.当代理节点A或B发现某一条长连接长期处于闲置状态的时候,在合适的时候,主动断开A、B之间的长连接,此时S301和S304所述的长连接依然处于连接状态,客户端和服务器会以为长连接依然存在,不会影响业务逻,使用决策树的算法对要断开的长连接进行智能计算,以最小化的减少断开后后续重连的影响;
S402.当S203所述的长连接LinkAB处于断开状态的时候,断开S301和S304所述的长连接,以此告知客户端和服务端,客户端和服务端之间的连接无法保持;让LinkAB之间的长连接重连,以降低因为偶发性的网络故障导致服务器和客户端之间的长连接断开;
S403.服务端主动向客户端发起数据包的时候,会重新建立代理节点A、B之间专门用于客户端和服务端的长连接;
S404.客户端向服务端主动发送数据包的时候,会重新建立代理节点A、B之间专门用于客户端和服务端的长连接。
进一步方案为,步骤5中,服务端主动向客户端发起数据请求具体实施过程为:
S501.当服务端向客户端主动发送数据包的时候,服务端程序会把数据包发送到代理节点B;
S502.当代理节点B接收到数据包后,会判断该数据包对应的代理节点A和代理节点B之间的长连接是否存在,如果还存在,跳转到S504,如果不存在跳转到S503;
S503.代理接单B通过LinkAB通知代理节点A,让代理节点A重建建立该数据包对应的长连接;
S504.代理节点B把数据传输给代理节点A;
S505.代理节点A把数据包传输给客户端程序。
本发明的有益效果在于:
本发明的一种管理服务端与客户端大量长连接的方法,通过在客户端建立代理节点A和代理节点B,并且智能地断开和恢复AB之间的长连接的方法,显著的降低了客户端和服务端之间的网络资源占用,并且不用修改原有的客户端和服务端的长连接相关程序,降低了维护成本。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要实用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。
在任一实施例中,如图1所示,本发明的一种管理服务端与客户端大量长连接的方法,包括以下步骤:
S1、准备工作;
S101.客户端和服务端程序各自编写对应的代理节点程序;
S102.确定客户端和服务端之间需要传输的数据类型和数据格式;
S103.确定代理节点A、B之间的长连接的通信协议以及相关的加密、解密算法;
S104.确定代理节点A、B之间的长连接的超时时限;
S105.确定代理节点A、B之间的长连接的重连策略。
S2、客户端与服务端的长连接建立;
S201.在客户端建立一个代理节点,定义为NodeA,该代理节点负责和客户端之间的长连接通信;
S202.在服务端建立相应的代理节点,定义为NodeB,该代理节点负责和服务端之间的长连接通信;
S203.在NodeA和NodeB之间建立一个长连接,定义为LinkAB。
S3、客户端向服务端建立长连接的请求;
S301.客户端代理节点A建立一个长连接;
S302.代理节点A通过S203所述的长连接LinkAB告知代理节点B客户端发起的长连接的相关信息;
S303.代理节点A建立连接到代理节点B的长连接,并把S301所述的长连接的内容转发到该长连接中;
S304.代理节点B根据步骤S303所述的信息,建立和服务端程序之间的长连接,S303所述的长连接的内容转发到该长连接中。
S4、长连接的连接状态管理;
S401.当代理节点A或B发现某一条长连接长期处于闲置状态的时候,可在合适的时候,主动断开A、B之间的长连接,此时S301和S304所述的长连接依然处于连接状态,客户端和服务器会以为长连接依然存在,不会影响业务逻辑;优化的,可以使用但不局限于决策树的算法对要断开的长连接进行智能计算,以最小化的减少断开后后续重连的影响;
S402.当S203所述的长连接LinkAB处于断开状态的时候,断开S301和S304所述的长连接,以此告知客户端和服务端,客户端和服务端之间的连接无法保持;优化的,可以让LinkAB之间的长连接重连,以降低因为偶发性的网络故障导致服务器和客户端之间的长连接断开;
S403.服务端主动向客户端发起数据包的时候,会重新建立代理节点A、B之间专门用于客户端和服务端的长连接;
S404.客户端向服务端主动发送数据包的时候,会重新建立代理节点A、B之间专门用于客户端和服务端的长连接。
S5、代理节点之间的数据传输,下面以服务端主动向客户端发起数据请求为例;
S501.当服务端向客户端主动发送数据包的时候,服务端程序会把数据包发送到代理节点B;
S502.当代理节点B接收到数据包后,会判断该数据包对应的代理节点A和代理节点B之间的长连接是否存在,如果还存在,跳转到S504,如果不存在跳转到S503;
S503.代理接单B通过LinkAB通知代理节点A,让代理节点A重建建立该数据包对应的长连接;
S504.代理节点B把数据传输给代理节点A;
S505.代理节点A把数据包传输给客户端程序。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。
Claims (6)
1.一种管理服务端与客户端大量长连接的方法,其特征在于,包括以下步骤:
S1、准备工作,确定客户端和服务端程序的代理节点程序、数据类型和数据格式,并确定重连策略;
S2、客户端与服务端各自建立建立代理节点,并在代理节点之间建立一个长连接;
S3、客户端向服务端建立长连接;
S4、长连接的连接状态管理与优化;
S5、代理节点之间开始数据传输。
2.如权利要求1所述的一种管理服务端与客户端大量长连接的方法,其特征在于,所述步骤1中,具体实施过程为:
S101.客户端和服务端程序各自编写对应的代理节点程序;
S102.确定客户端和服务端之间需要传输的数据类型和数据格式;
S103.确定代理节点A、B之间的长连接的通信协议以及相关的加密、解密算法;
S104.确定代理节点A、B之间的长连接的超时时限;
S105.确定代理节点A、B之间的长连接的重连策略。
3.如权利要求1所述的一种管理服务端与客户端大量长连接的方法,其特征在于,所述步骤2中,具体实施过程为:
S201.在客户端建立一个代理节点,定义为NodeA,该代理节点负责和客户端之间的长连接通信;
S202.在服务端建立相应的代理节点,定义为NodeB,该代理节点负责和服务端之间的长连接通信;
S203.在NodeA和NodeB之间建立一个长连接,定义为LinkAB。
4.如权利要求1或3任一项所述的一种管理服务端与客户端大量长连接的方法,其特征在于,所述步骤3中,具体实施过程为:
S301.客户端代理节点A建立一个长连接;
S302.代理节点A通过S203所述的长连接LinkAB告知代理节点B客户端发起的长连接的相关信息;
S303.代理节点A建立连接到代理节点B的长连接,并把S301所述的长连接的内容转发到该长连接中;
S304.代理节点B根据步骤S303所述的信息,建立和服务端程序之间的长连接,S303所述的长连接的内容转发到该长连接中。
5.如权利要求1、3、4任一项所述的一种管理服务端与客户端大量长连接的方法,其特征在于,所述步骤4中,具体实施过程为:
S401.当代理节点A或B发现某一条长连接长期处于闲置状态的时候,主动断开A、B之间的长连接,此时S301和S304所述的长连接依然处于连接状态,使用决策树的算法对要断开的长连接进行智能计算;
S402.当S203所述的长连接LinkAB处于断开状态的时候,断开S301和S304所述的长连接,以此告知客户端和服务端,客户端和服务端之间的连接无法保持;让LinkAB之间的长连接重连,以降低因为偶发性的网络故障导致服务器和客户端之间的长连接断开;
S403.服务端主动向客户端发起数据包的时候,会重新建立代理节点A、B之间专门用于客户端和服务端的长连接;
S404.客户端向服务端主动发送数据包的时候,会重新建立代理节点A、B之间专门用于客户端和服务端的长连接。
6.如权利要求1所述的一种管理服务端与客户端大量长连接的方法,其特征在于,所述步骤5中,服务端主动向客户端发起数据请求具体实施过程为:
S501.当服务端向客户端主动发送数据包的时候,服务端程序会把数据包发送到代理节点B;
S502.当代理节点B接收到数据包后,会判断该数据包对应的代理节点A和代理节点B之间的长连接是否存在,如果还存在,跳转到S504,如果不存在跳转到S503;
S503.代理接单B通过LinkAB通知代理节点A,让代理节点A重建建立该数据包对应的长连接;
S504.代理节点B把数据传输给代理节点A;
S505.代理节点A把数据包传输给客户端程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310824138.2A CN116800816A (zh) | 2023-07-06 | 2023-07-06 | 一种管理服务端与客户端大量长连接的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310824138.2A CN116800816A (zh) | 2023-07-06 | 2023-07-06 | 一种管理服务端与客户端大量长连接的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116800816A true CN116800816A (zh) | 2023-09-22 |
Family
ID=88036608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310824138.2A Pending CN116800816A (zh) | 2023-07-06 | 2023-07-06 | 一种管理服务端与客户端大量长连接的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116800816A (zh) |
-
2023
- 2023-07-06 CN CN202310824138.2A patent/CN116800816A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4925218B2 (ja) | ロードバランス型ネットワーク環境におけるインテリジェントフェイルバック | |
CN105262836A (zh) | 服务器推送信息的方法及客户端接收推送信息的方法 | |
CN111327650A (zh) | 数据传输方法、装置、设备及存储介质 | |
CN101796774A (zh) | 在ip网络上自动检查ip链接的连接状态的方法和系统 | |
CN114363963A (zh) | 一种云原生upf信令面负载均衡选择方法及系统 | |
CN114025002A (zh) | 一种基于mqtt信息传输的方法、系统及通信设备 | |
CN110430551A (zh) | 一种基于quic技术的汽车数据传输方法及系统 | |
JP4940785B2 (ja) | 無線装置、無線通信システム、無線装置の無線通信方法及び無線通信システムの無線通信方法 | |
US8325617B2 (en) | Method and apparatus for selective recovery from branch isolation in very large VoIP networks | |
EP2472796A1 (en) | Method and system for blocking protocol messages at a sub-ring control channel without virtual channel | |
KR101322213B1 (ko) | P2p 오버레이 네트워크 상에서 무선 노드의 기능을처리하는 프록싱 처리 방법 및 서버 | |
CN116192863B (zh) | 微服务流量处理方法、dpu服务网格部署方法及系统 | |
CN116800816A (zh) | 一种管理服务端与客户端大量长连接的方法 | |
CN113595828B (zh) | 软件定义网络拓扑探测方法及系统 | |
CN108337162B (zh) | 一种支持双归属保护的系统及方法 | |
CN109379443B (zh) | 一种面向物联网的分布式消息队列的实现方法 | |
JP3682439B2 (ja) | データ通信システム及び方法、サーバ装置、クライアント装置、並びにプログラム | |
CN114337900A (zh) | 通信控制方法及装置、电子设备、计算机可读介质 | |
KR20120128031A (ko) | 망 부하 감소를 위한 푸시 서비스 제공 시스템 및 방법 | |
CN108989467B (zh) | 集中式寻址方法 | |
CN109120578B (zh) | 一种实现链路连接处理的方法及装置 | |
CN115152192A (zh) | Pce受控网络可靠性 | |
CN112311759A (zh) | 一种混合网络下的设备连接切换方法和系统 | |
KR20140094306A (ko) | 무선 통신 네트워크에서 http 프로토콜의 전송 지연과 http 서버의 프로세싱 부하를 줄이는 장치 및 방법 | |
CN113746574B (zh) | 一种信息交互方法、系统及设备 |
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 |