CN109922053A - 数据传输方法、装置、电子设备及可读存储介质 - Google Patents

数据传输方法、装置、电子设备及可读存储介质 Download PDF

Info

Publication number
CN109922053A
CN109922053A CN201910134219.3A CN201910134219A CN109922053A CN 109922053 A CN109922053 A CN 109922053A CN 201910134219 A CN201910134219 A CN 201910134219A CN 109922053 A CN109922053 A CN 109922053A
Authority
CN
China
Prior art keywords
websocket
server
client
data packet
sent
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
Application number
CN201910134219.3A
Other languages
English (en)
Inventor
俞超
尤勇
杨志成
陈静
喻争荣
周家溢
马全华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Sankuai Online Technology Co Ltd
Original Assignee
Beijing Sankuai Online Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Sankuai Online Technology Co Ltd filed Critical Beijing Sankuai Online Technology Co Ltd
Priority to CN201910134219.3A priority Critical patent/CN109922053A/zh
Publication of CN109922053A publication Critical patent/CN109922053A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请实施例提供了一种数据传输方法、介质、电子设备及存储介质,所述方法应用于客户端。客户端与目标代理服务器通过websocket协议通信连接。客户端在预备向业务服务器发送请求数据时,首先通过已安装的支持websocket协议的小程序将所述请求数据封装成websocket协议格式的数据包,并发送至目标代理服务器,然后从所述目标代理服务器接收到包含响应数据的websocket协议格式的数据包,再对该数据包进行解封装以获取响应数据,所述响应数据与所述请求数据相对应。由于客户端与目标代理服务器之间采用websocket协议进行通信,不仅节省了大量用于DNS解析以及三次握手的时间,加快了客户端与业务服务器之间的通信速度,而且避免了DNS解析过程中容易出现的域名劫持的风险。

Description

数据传输方法、装置、电子设备及可读存储介质
技术领域
本申请实施例涉及通信技术领域,尤其涉及一种数据传输方法、装置、电子设备及可读存储介质。
背景技术
众所周知,客户端在运行过程中必不可少地要与后端的业务服务器进行数据通信。在相关技术中,客户端采用向后端的业务服务器发送ajax请求的方式与后端的业务服务器之间进行数据传输。而ajax请求的本质是采用http协议进行数据传输,这使得客户端每次向后端的业务服务器发送ajax请求时都要经历DNS解析和三次握手的过程。由于DNS解析的过程存在域名劫持的风险,可能导致客户端无法访问到后端的业务服务器。而三次握手的过程需要较长的时间,因而客户端需要较长的时间才能访问到后端的业务服务器,严重影响了客户端与后端的业务服务器之间的数据传输效率。
发明内容
为解决相关技术中存在的问题,本申请实施例提供一种数据传输方法、装置、电子设备及可读存储介质。
本申请实施例第一方面提供了一种数据传输方法,应用于客户端,所述客户端与代理服务器集群之间通信连接,所述代理服务器集群与业务服务器通信连接,所述方法包括:
对待发送的请求数据进行封装,得到第一websocket数据包;
通过websocket通道将所述第一websocket数据包发送给目标代理服务器,所述目标代理服务器是所述代理服务器集群中与所述客户端预先建立所述websocket通道的代理服务器;
接收所述目标代理服务器发送的第二websocket数据包,所述第二websocket数据包是所述目标代理服务器在接收到所述业务服务器返回的响应数据后,对所述响应数据进行封装得到的;
对所述第二websocket数据包进行解封装,得到所述响应数据。
可选地,对待发送的请求数据进行封装,包括:
从预备向所述业务服务器发送的ajax请求中确定所述请求数据;
对所述请求数据进行封装。
可选地,在对待发送的请求数据进行封装之前,所述方法还包括:
与所述目标代理服务器协商自定义代理协议;
对待发送的请求数据进行封装,包括:
基于所述自定义代理协议,对所述请求数据进行封装;
对所述第二websocket数据包进行解封装,包括:
基于所述自定义代理协议,对所述第二websocket数据包进行解封装。
可选地,通过websocket通道将所述第一websocket数据包发送给目标代理服务器,包括:
通过所述websocket通道,将携带所述第一websocket数据包的代理请求发送给所述目标代理服务器;
接收所述目标代理服务器发送的第二websocket数据包,包括:
接收所述目标代理服务器针对所述代理请求返回的ACK确认响应,以及所述目标服务器发送的携带所述第二websocket数据包的代理响应。
可选地,所述方法还包括:
在所述ACK确认响应超时且所述客户端支持故障切换功能的情况下,通过websocket备用通道向备用代理服务器发送所述代理请求,所述备用代理服务器为所述代理服务器集群中与所述目标代理服务器不同且与所述客户端预先建立websocket备用通道的代理服务器;
在所述ACK确认响应超时且所述客户端不支持故障切换功能的情况下,确认所述代理请求发送失败。
可选地,所述方法还包括:
统计所述ACK确认响应超时的连续次数;
在所述连续次数超过预设次数的情况下,更换所述目标代理服务器,或者,关闭所述websocket通道。
可选地,在接收所述目标代理服务器通过所述websocket通道发送的第二websocket数据包之后,所述方法还包括:
对下一次待发送的请求数据进行封装,得到第三websocket数据包;
通过所述websocket通道,将所述第三websocket数据包发送给所述目标代理服务器。
本申请实施例第二方面提供了一种数据传输方法,应用于代理服务器集群中的目标代理服务器,所述目标代理服务器是所述代理服务器集群中与客户端预先建立websocket通道的代理服务器;所述代理服务器集群与所述客户端以及业务服务器之间分别通信连接;所述方法包括:
接收所述客户端通过所述websocket通道发送的第一websocket数据包,所述第一websocket数据包是所述客户端对待发送的请求数据进行封装得到的;
对所述第一websocket数据包进行解封装,得到所述请求数据;
将所述请求数据发送给所述业务服务器;
接收所述业务服务器返回的响应数据;
对所述响应数据进行封装,得到第二websocket数据包;
将所述第二websocket数据包发送给所述客户端。
可选地,在对所述第一websocket数据包进行解封装之前,所述方法还包括:
与所述客户端协商自定义代理协议;
对所述第一websocket数据包进行解封装,包括:
基于所述自定义代理协议,对所述第一websocket数据包进行解封装;
对所述响应数据进行封装,包括:
基于所述自定义代理协议,对所述响应数据进行封装。
可选地,接收所述客户端通过所述websocket通道发送的第一websocket数据包,包括:
接收所述客户端通过所述websocket通道发送的携带所述第一websocket数据包的代理请求;
将所述第二websocket数据包发送给所述客户端,包括:
向所述客户端发送针对所述代理请求的ACK确认响应,以及携带所述第二websocket数据包的代理响应。
可选地,在将所述第二websocket数据包发送给所述客户端之后,所述方法还包括:
接收所述客户端发送的第三websocket数据包,所述第三websocket数据包是所述客户端在接收所述第二websocket数据包后,对下一次预备向所述业务服务器发送的请求数据进行封装得到的。
可选地,所述代理服务器集群与业务服务器之间基于http协议或rcp协议通信连接。
可选地,所述代理服务器集群与业务服务器均部署在内网内,通过内网DNS服务器进行DNS解析,并通过连接池建立通信连接。
本申请实施例第三方面提供一种数据传输装置,应用于客户端,所述客户端与代理服务器集群之间通信连接,所述代理服务器集群与业务服务器通信连接;所述装置包括:
第一封装模块,被配置为对待发送的请求数据进行封装,得到第一websocket数据包;
第一发送模块,被配置为通过websocket通道,将所述第一websocket数据包发送给目标代理服务器,所述目标代理服务器是所述代理服务器集群中与所述客户端预先建立所述websocket通道的代理服务器;
第一接收模块,被配置为接收所述目标代理服务器发送的第二websocket数据包,所述第二websocket数据包是所述目标代理服务器在接收到所述业务服务器返回的响应数据后,对所述响应数据进行封装得到的;
第一解封装模块,被配置为对所述第二websocket数据包进行解封装,得到所述响应数据。
可选地,所述第一封装模块包括:
确定模块,被配置为从预备向所述业务服务器发送的ajax请求中确定所述请求数据;
封装子模块,被配置为对所述请求数据进行封装。
可选地,所述装置还包括:
第一协商模块,被配置为在对待发送的请求数据进行封装之前,与所述目标代理服务器协商自定义代理协议;
所述第一封装模块包括:
第一封装子模块,被配置为基于所述自定义代理协议,对所述请求数据进行封装;
所述第一解封装模块包括:
第一解封装子模块,被配置为基于所述自定义代理协议,对所述第二websocket数据包进行解封装。
可选地,所述第一发送模块包括:
发送子模块,被配置为通过所述websocket通道,将携带所述第一websocket数据包的代理请求发送给所述目标代理服务器;
所述第一接收模块包括:
第一接收子模块,被配置为接收所述目标代理服务器针对所述代理请求返回的ACK确认响应,以及所述目标服务器发送的携带所述第二websocket数据包的代理响应。
可选地,所述装置还包括:
第二发送模块,被配置为在所述ACK确认响应超时且所述客户端支持故障切换功能的情况下,通过websocket备用通道向备用代理服务器发送所述代理请求,所述备用代理服务器为所述代理服务器集群中与所述目标代理服务器不同且与所述客户端预先建立websocket备用通道的代理服务器;
确认模块,被配置为在所述ACK确认响应超时且所述客户端不支持故障切换功能的情况下,确认所述代理请求发送失败。
可选地,所述装置还包括:
统计模块,被配置为统计所述ACK确认响应超时的连续次数;
执行模块,被配置为在所述连续次数超过预设次数的情况下,更换所述目标代理服务器,或者,关闭所述websocket通道。
可选地,所述装置还包括:
第二封装模块,被配置为在接收所述目标代理服务器通过所述websocket通道发送的第二websocket数据包之后,对下一次待发送的请求数据进行封装,得到第三websocket数据包;
第三发送模块,被配置为通过所述websocket通道,将所述第三websocket数据包发送给所述目标代理服务器。
本申请实施例第四方面提供了一种数据传输装置,应用于代理服务器集群中的目标代理服务器,所述目标代理服务器是所述代理服务器集群中与客户端预先建立websocket通道的代理服务器;所述代理服务器集群与所述客户端以及业务服务器之间分别通信连接;所述装置包括:
第二接收模块,被配置为接收所述客户端通过所述websocket通道发送的第一websocket数据包,所述第一websocket数据包是所述客户端对待发送的请求数据进行封装得到的;
第二解封装模块,被配置为对所述第一websocket数据包进行解封装,得到所述请求数据;
第四发送模块,被配置为将所述请求数据发送给所述业务服务器;
第三接收模块,被配置为接收所述业务服务器返回的响应数据;
第三封装模块,被配置为对所述响应数据进行封装,得到第二websocket数据包;
第五发送模块,被配置为将所述第二websocket数据包发送给所述客户端。
可选地,所述装置还包括:
第二协商模块,被配置为在对所述第一websocket数据包进行解封装之前,与所述客户端协商自定义代理协议;
所述第二解封装模块包括:
第二解封装子模块,被配置为基于所述自定义代理协议,对所述第一websocket数据包进行解封装;
所述第三封装模块包括:
第三封装子模块,被配置为基于所述自定义代理协议,对所述响应数据进行封装。
可选地,所述第二接收模块包括:
第二接收子模块,被配置为接收所述客户端通过所述websocket通道发送的携带所述第一websocket数据包的代理请求;
所述第五发送模块包括:
第五发送子模块,被配置为向所述客户端发送针对所述代理请求的ACK确认响应,以及携带所述第二websocket数据包的代理响应。
可选地,所述装置还包括:
第四接收模块,被配置为接收所述客户端发送的第三websocket数据包,所述第三websocket数据包是所述客户端在接收所述第二websocket数据包后,对下一次预备向所述业务服务器发送的请求数据进行封装得到的。
本申请实施例第五方面提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行时实现本申请第一方面或第二所述的方法的步骤。
本申请实施例第六方面提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请第一方面或第二方面所述的方法中的步骤。
采用本申请实施例提供的一种数据传输方法,客户端与目标代理服务器通过websocket协议通信连接。客户端在预备向业务服务器发送请求数据时,首先通过已安装的支持websocket协议的小程序将所述请求数据封装成websocket协议格式的数据包,并发送至目标代理服务器,然后从所述目标代理服务器接收到包含响应数据的websocket协议格式的数据包,再对该数据包进行解封装以获取响应数据,所述响应数据与所述请求数据相对应。客户端与目标代理服务器之间采用websocket协议进行通信,与传统的采用http协议进行通信相比,不仅节省了大量用于DNS解析以及三次握手的时间,加快了客户端与业务服务器之间的通信速度,而且避免了DNS解析过程中容易出现的域名劫持的风险。因此,本申请实施例能有效地减少客户端无法访问到业务服务器,或者需要较长的时间才能访问到业务服务器的现象,提高客户端与后端的业务服务器之间的数据传输效率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的一种实施环境的示意图;
图2是根据一示例性实施例示出的一种数据传输方法的原理图;
图3是根据一示例性实施例示出的一种数据传输方法的第一种流程图;
图4是根据一示例性实施例示出的封装请求数据的流程图;
图5是根据一示例性实施例示出的一种数据传输方法的第二种流程图;
图6是根据一示例性实施例示出的客户端实施故障切换的流程图;
图7是根据一示例性实施例示出的客户端实施故障处理的流程图;
图8是根据一示例性实施例示出的另一种数据传输方法的第一种流程图;
图9是根据一示例性实施例示出的另一种数据传输方法的第二种流程图;
图10是根据一示例性实施例提供的一种数据传输装置的示意图;
图11是根据一示例性实施例示出的另一种数据传输装置的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1是根据一示例性实施例示出的一种实施环境的示意图。参照图1,该实施环境包括:客户端100、代理服务器200以及业务服务器300。代理服务器200与客户端100和业务服务器300分别通信连接。其中,通信连接的方式可以是通过有线网络连接也可以是通过无线网络连接。
客户端100可运行在手机、平板电脑、电子书阅读器、膝上便携型计算机和台式计算机等设备上。
代理服务器200和业务服务器300分别可以是一台服务器,也可以是由若干服务器组成的服务器集群,或者是一个云计算服务中心。
在一种实施方式中,所述代理服务器集群与业务服务器300之间基于http协议或rcp协议通信连接。
在一种实施方式中,所述代理服务器集群与业务服务器300均部署在内网内,通过内网DNS服务器进行DNS解析,并通过连接池建立通信连接。
以图1为例,代理服务器200与业务服务器300之间基于http协议或rcp协议通信连接。此外,代理服务器200与业务服务器300均部署在内网内,通过内网DNS服务器进行DNS解析,并通过连接池建立通信连接。因此,代理服务器200与业务服务器300之间的通信可以通过程序DNS转换以及连接池的方式来避免DNS解析和三次握手的过程。
在实际情况中,客户端100通常采用ajax请求(一种浏览器技术,在浏览器与Web服务器之间使用http请求进行数据传输,具有使网页从Web服务器获取少量信息并进行显示的功能)的方式与业务服务器300之间进行数据传输。Ajax请求的本质是采用http协议进行数据传输,这使得客户端100每次向业务服务器300发起请求时都要经历DNS解析和三次握手的过程。在进行DNS解析的过程中,如果域名解析服务器遭到攻击,导致业务服务器300的域名被劫持,客户端100就无法访问到业务服务器300。而客户端100与业务服务器300进行三次握手需要较长的时间,进而导致客户端100需要较长的时间才能访问到业务服务器300,这些都严重地影响了客户端100与业务服务器300之间的数据传输效率。
本申请实施例提出一种数据传输方法,通过在客户端100和业务服务器300之间设置代理服务器200,客户端100与代理服务器200之间通过websocket协议进行数据传输,再由代理服务器200转发客户端100与业务服务器300之间的传输的数据,使得客户端100与业务服务器300之间无需通过ajax请求进行数据传输,能有效地减少客户端100无法访问到业务服务器300,或者需要较长的时间才能访问到业务服务器300的现象,提高了客户端100与业务服务器300之间的数据传输效率。图2是根据一示例性实施例示出的一种数据传输方法的原理图,基于图1所述的实施环境生成。参照图2,代理服务器集群包括多个代理服务器200,且通过websocket协议与客户端100通信连接,业务服务器300通过http协议与代理服务器200通信连接。代理接入点信息查询服务用于在客户端100接入代理服务器200之前为客户端100提供查询关于代理服务器200的信息的服务,比如域名信息。业务代理规则配置服务用于在客户端100接入代理服务器200之前为客户端100提供查询接入代理服务器200所需要的配置,比如:客户端100在首次与代理服务器200建立通信连接时允许的超时的时长、建立通信连接失败之后允许重新连接的次数、客户端100发送的请求在失败之后是否支持重新请求等。
图3是根据一示例性实施例示出的一种数据传输方法的流程图,应用于图1或图2中的客户端100。参照图2和图3,所述方法包括以下步骤:
在步骤S11中,对待发送的请求数据进行封装,得到第一websocket数据包。
本申请实施例中,客户端100上安装有支持websocket协议的小程序,该小程序用于将用户的请求数据封装成第一websocket数据包。通过该小程序,客户端100与代理服务器200之间通过websocket协议进行通信,具体地,在通信之前,客户端100基于websocket协议,对预备向业务服务器300发送的请求数据进行封装,得到第一websocket数据包。Websocket协议是一种位于应用层的双向通信协议(http是单向通信协议,只有客户端100发起http请求,业务端服务器300才会返回数据),在建立连接之后,客户端100与业务服务器300都可以主动向对方发送或接收数据。在客户端100的JS代码中创建websocket后,客户端100向业务服务器300发起一个http请求,在取得业务服务器300的响应后,两者之间的连接会使用http升级将http协议转化为websocket协议,此时,已经建立好的通信连接将保持持久状态,使得双方之间的通信与http协议无关,即客户端100在通信连接建立之后向业务服务器300发送的所有请求均不需DNS解析和三次握手过程。
在一个实施例中,客户端100可以是安装有支持websocket协议的小程序的微信客户端,业务服务器300可以是微信客户端的后端的业务服务器300。当用户在微信客户端上搜索公众号时,该小程序基于websocket协议将用户的搜索请求封装成第一websocket数据包。该第一websocket数据包中包含目的IP地址、源IP地址、净载数据以及其它可选或必选的部分,目的IP地址即为微信客户端的后端的业务服务器300的地址,源IP地址即为运行微信客户端的终端设备的IP地址,净载数据即为用户在公众号搜索栏里输入的公众号的名称。
在步骤S12中,通过websocket通道将所述第一websocket数据包发送给目标代理服务器,所述目标代理服务器是所述代理服务器集群中与所述客户端100预先建立所述websocket通道的代理服务器200。
本申请实施例中,客户端100与目标代理服务器之间建立有websocket通道。代理服务器集群包括多个代理服务器200。客户端100上的支持websocket协议的小程序通过websocket协议与目标代理服务器通信连接,目标代理服务器为所述代理服务器集群中的任意一个代理服务器200。客户端100在向业务服务器300发送请求数据时,首先将请求数据进行封装,然后再发送至目标代理服务器。
仍以客户端100是安装有支持websocket协议的小程序的微信客户端时,用户在微信客户端上搜索公众号为例,小程序将用户搜索某个公众号的请求数据封装成第一websocket数据包后,通过与目标服务器之间的websocket通道将第一websocket数据包发送至目标服务器。目标服务器是由小程序在向代理服务器集群发送通信连接的请求时,由代理服务器集群根据各个代理服务器200的当前工作状态随机或按优先级分配的。
在步骤S13中,接收所述目标代理服务器发送的第二websocket数据包,所述第二websocket数据包是所述目标代理服务器在接收到所述业务服务器300返回的响应数据后,对所述响应数据进行封装得到的。
本申请实施例中,目标代理服务器通过http协议与业务服务器300通信连接,用于在接收到来自客户端100的请求数据时,将请求数据发送至业务服务器300,并从业务服务器300接收与请求数据相对应的响应数据。目标代理服务器在获取到响应数据后,将响应数据封装为第二websocket数据包,再发送至客户端100。
仍以客户端100是安装有支持websocket协议的小程序的微信客户端,业务服务器300是微信的后端的业务服务器300时,用户在微信客户端上搜索公众号为例,目标代理服务器在接收到第一websocket数据包后,基于websocket协议解封装第一websocket数据包,然后将得到的请求数据封装为http协议格式的数据包,再发送至微信的后端的业务服务器300。目标代理服务器从微信的后端的业务服务器300接收到与请求数据相对应的包含响应数据的数据包后,解封装数据包得到响应数据,然后基于websocket协议将响应数据封装为第二websocket数据包,再发送至微信客户端。
在步骤S14中,对所述第二websocket数据包进行解封装,得到所述响应数据。
本申请实施例中,客户端100在通过websocket通道接收到第二websocket数据包后,根据websocket协议对第二websocket数据包解封装,以得到响应数据。
仍以客户端100是安装有支持websocket协议的小程序的微信客户端时,用户在微信客户端上搜索公众号为例,在微信客户端从目标代理服务器获得第二websocket数据包后,微信客户端上安装的小程序基于websocket协议对第二websocket数据包进行解封装,以得到最终的响应数据,并将响应数据展示在微信客户端的页面供用户使用。
上述实施例仅列举了客户端100为微信客户端的情况,在实际情况中,所有安装了支持websocket协议的小程序且需要与后端的业务服务器300进行通信的客户端100均可采用本申请实施例中的数据传输方法,并且这些客户端100的后端的业务服务器300不需要做任何设置即可与代理服务器200进行通信。
本申请实施例中,客户端100与目标代理服务器通过websocket协议通信连接。客户端100在预备向业务服务器300发送请求数据时,首先通过已安装的支持websocket协议的小程序将请求数据封装成websocket协议格式的数据包,并发送至目标代理服务器,然后从目标代理服务器接收到包含响应数据的websocket协议格式的数据包,再对该数据包进行解封装以获取响应数据,其中,响应数据与请求数据相对应。本申请实施例中,客户端100与目标代理服务器之间采用websocket协议进行通信,与传统的采用http协议进行通信相比,不仅节省了大量用于DNS解析以及三次握手的时间,加快了客户端100与业务服务器300之间的通信速度,而且避免了DNS解析过程中容易出现的域名劫持的风险。因此,本申请实施例能有效地减少客户端100无法访问到业务服务器300,或者需要较长的时间才能访问到业务服务器300的现象。
图4是根据一示例性实施例示出的封装请求数据的流程图。参照图4,步骤S11可以包括以下步骤:
在步骤S110中,从预备向所述业务服务器300发送的ajax请求中确定所述请求数据。
在步骤S111中,对所述请求数据进行封装。
本申请实施例中,在客户端100与业务服务器300之间设置有用于加快通信速度的代理服务器200。其中,客户端100与代理服务器200之间采用websocket协议通信,代理服务器200与业务服务器300之间采用http协议通信,但当代理服务器200通过内网与业务服务器300进行通信时,可通过编程来控制两者之间的通信过程,避免DNS解析和三次握手的过程。因此,可以代替原来的ajax请求的方式,提高通信速度。
下面以客户端100是微信客户端,业务服务器300是微信客户端的后端的业务服务器300时,用户在微信客户端上搜索公众号为例,对上述步骤S110和步骤S111进行详细说明。若微信客户端没有安装支持websocket协议的小程序,当用户在公众号搜索栏里输入某公众号并点击搜索按钮时,微信客户端根据点击搜索按钮时触发的事件获得搜索某个公众号的请求数据,并通过ajax请求的方式将该请求数据封装的数据包发送至后端的业务服务器300,此时,该请求数据的封装以及发送至后端的业务服务器300的过程是由浏览器来完成的。
在微信客户端上安装了支持websocket协议的小程序后,微信客户端根据点击搜索按钮时触发的事件获得请求数据,并将该请求数据发送至小程序,而不是调用浏览器功能,因为此时,通过设置可以使小程序具有比浏览器更高的优先级。微信客户端根据点击搜索按钮时触发的事件获得请求数据的过程即为客户端100从预备向所述业务服务器300发送的ajax请求中确定所述请求数据的过程。小程序在获取到搜索某个公众号的请求数据后,基于websocket协议,对该请求数据进行封装,然后再经过代理服务器200将封装后的数据包发送至后端的业务服务器300。
本申请实施例中,客户端100采用websocket协议代替http协议对请求数据进行封装,避免了客户端100与业务服务器300通信时的DNS解析和三次握手的操作,在降低通信过程中域名劫持风险的同时大幅度缩短了通信时间。
本申请实施例中,在所述步骤S11之前,还可以包括以下步骤:
与所述目标代理服务器协商自定义代理协议。
图5是根据一示例性实施例示出的一种数据传输方法的另一种流程图。参照图5,所述方法包括以下步骤:
在步骤S21中,基于所述自定义代理协议,对所述请求数据进行封装,得到第一websocket数据包。
在步骤S22中,通过所述websocket通道,将携带所述第一websocket数据包的代理请求发送至所述目标代理服务器。
其中,目标代理服务器是代理服务器集群中与客户端100预先建立websocket通道的代理服务器200。
在步骤S23中,接收所述目标代理服务器针对所述代理请求返回的ACK确认响应,以及所述目标服务器发送的携带所述第二websocket数据包的代理响应。
其中,第二websocket数据包是目标代理服务器在接收到业务服务器300返回的响应数据后,基于自定义代理协议对响应数据进行封装得到的,其中,响应数据与请求数据对应。
在步骤S24中,基于所述自定义代理协议,对所述第二websocket数据包进行解封装,得到所述响应数据。
其中,第二websocket数据包是目标代理服务器在接收到业务服务器300返回的响应数据后,基于自定义代理协议对响应数据进行封装得到的,响应数据与请求数据对应。
本申请实施例中,由于websocket协议使用了自定义协议,因此,在客户端100向目标代理服务器发起请求之前,还需要与目标代理服务器协商自定义代理协议,即双方需要统一各自使用的通信协议。当双方达成了自定义代理协议后,客户端100基于自定义代理协议将预备向业务服务器300发送的请求数据封装为第一websocket数据包,然后将携带第一websocket数据包的代理请求发送至目标代理服务器。目标代理服务器依次从第一websocket数据包解析出请求数据、将请求数据发送至业务服务器300、接收业务服务器300的针对请求数据的响应数据、基于自定义代理协议封装响应数据、向客户端100发送ACK确认响应以及携带第二websocket数据包的代理响应。客户端100在接收到第二websocket数据包后,基于自定义代理协议,解封装数据包以得到与请求数据相对应的响应数据。
所述步骤S21至所述步骤S24的具体实施过程请参照上述实施例中的详细说明。
本申请实施例中,客户端100与所述目标代理服务器之间通过基于websocket协议的自定义代理协议进行通信,比起通过基于http协议的ajax请求进行通信,在防止通信过程中域名劫持风险的同时能有效减少客户端100与目标代理服务器之间的通信时间。
图6是根据一示例性实施例示出的客户端实施故障切换的流程图。参照图6,所述方法还包括以下步骤:
在步骤S31中,在所述ACK确认响应超时且所述客户端100支持故障切换功能的情况下,通过websocket备用通道向备用代理服务器发送所述代理请求,所述备用代理服务器为所述代理服务器集群中与所述目标代理服务器不同且与所述客户端100预先建立websocket备用通道的代理服务器200。
在步骤S32中,在所述ACK确认响应超时且所述客户端100不支持故障切换功能的情况下,确认所述代理请求发送失败。
在本申请实施例中,ACK确认响应为目标代理服务器发送至客户端100的用于告知代理请求发送成功的消息。若客户端100在预设时间内接收到ACK确认响应,则确认此次代理请求发送成功;若客户端100未在预设时间内接收到ACK确认响应,则确认此次代理请求发送失败。若客户端100支持故障切换的功能,则在确认此次代理请求发送失败时,将目标代理服务器切换到备用代理服务器,并通过websocket备用通道向备用代理服务器发送代理请求。
下面以客户端100是支持故障切换功能的微信客户端时,用户在微信客户端上搜索公众号为例,对客户端100实施故障切换的过程进行详细说明。微信客户端向目标代理服务器发送了查找某公众号的代理请求后,若在预设的1分钟内未接收到ACK确认响应,则确认此次代理请求发送失败,然后将目标代理服务器切换到备用代理服务器,并通过与备用代理服务器之间建立的备用websocket通道向该备用代理服务器重新发送查找某公众号的代理请求。若微信客户端在1分钟内仍未从该备用代理服务器接收到ACK确认响应,继续更换到其他优先级次于该备用代理服务器的代理服务器200,并重新发送查找某公众号的代理请求。
本申请实施例提供了一种客户端100应对代理服务器200出现故障的方式,即客户端100在确认代理请求发送失败后,通过将目标代理服务器切换到备用代理服务器并重新发送代理请求来与业务服务器300通信的方式,有效地避免了因代理服务器200出现故障而给用户带来的损失。同时,服务器集群还可以通过测试各个代理服务器200的响应速度来对各个代理服务器200设置优先级,使得下次客户端100向业务服务器300发起请求时可以优先与高质量的代理服务器200连接。
图7是根据一示例性实施例示出的客户端实施故障处理的流程图。参照图7,所述方法还包括以下步骤:
在步骤S41中,统计所述ACK确认响应超时的连续次数。
在步骤S42中,在所述连续次数超过预设次数的情况下,更换所述目标代理服务器,或者,关闭所述websocket通道。
本申请实施例中,若客户端100从单个代理服务器200连续未接收到ACK确认响应的次数达到预设次数时,客户端100除了可以选择将该代理服务器200切换到备用代理服务器,还可以选择关闭与该代理服务器200之间已建立的websocket通道,防止该出现故障的代理服务器200影响其他客户端100与业务服务器300的数据传输效率。
结合上述实施例,在接收所述目标代理服务器通过所述websocket通道发送的第二websocket数据包之后,所述方法还包括以下步骤:
基于websocket协议,对下一次待发送的请求数据进行封装,得到第三websocket数据包。
通过所述websocket通道,将所述第三websocket数据包发送给所述目标代理服务器。
本申请实施例中,客户端100在接收到目标代理服务器发送的第二websocket数据包之后,基于websocket协议将下一次预备向业务服务器300发送的请求数据封装成第三websocket数据包,然后再将第三websocket数据包发送至目标代理服务器。Websocket协议本身支持异步请求响应的方式,但在此处客户端100在接收到所述目标代理服务器返回的第二websocket数据包之后才将所述第三websocket数据包发送至所述目标代理服务器,实现了异步响应到同步响应的转换。
基于同一发明构思,本申请另一实施例提供一种数据传输方法。图8是根据一示例性实施例示出的另一种数据传输方法的另一种流程图,应用于图1或图2中的代理服务器200。参照图1和图8,所述方法包括以下步骤:
在步骤S51中,接收所述客户端100通过所述websocket通道发送的第一websocket数据包,所述第一websocket数据包是所述客户端100对待发送的请求数据进行封装得到的。
具体地,第一websocket数据包是客户端100对待发送的请求数据进行封装得到的。
在步骤S52中,对所述第一websocket数据包进行解封装,得到所述请求数据。
在步骤S53中,将所述请求数据发送至所述业务服务器300。
在步骤S54中,接收所述业务服务器300返回的响应数据。
其中,响应数据与请求数据对应。
在步骤S55中,对所述响应数据进行封装,得到第二websocket数据包。
在步骤S56中,将所述第二websocket数据包发送至所述客户端100。
本申请实施例中,数据传输方法应用于代理服务器集群中的目标代理服务器,目标代理服务器是代理服务器集群中与客户端100预先建立websocket通道的代理服务器200;代理服务器集群与客户端100以及业务服务器300之间分别通信连接。目标代理服务器在接收到客户端100发送的第一websocket数据包后,解封装该数据包得到请求数据,然后将该请求数据发送至业务服务器300。目标代理服务器在接收到业务服务器300返回的与该请求数据相对应的响应数据后,基于websocket协议将该响应数据封装为第二websocket数据包,然后发送至客户端100。
下面以客户端100是微信客户端,业务服务器300是微信客户端的后端的业务服务器300时,用户在微信客户端上搜索公众号为例,对上述步骤S41至S42进行说明。目标代理服务器在接收到微信客户端发送的第一websocket数据包后,基于websocket协议解封装该数据包以得到查找某个公众号的请求数据,然后将请求数据基于http协议发送至后端的业务服务器300。后端的业务服务器300用于将与查找某个公众号的请求数据相对应的响应数据发送至目标代理服务器。目标代理服务器得到响应数据后,基于websocket协议将响应数据封装为第二websocket数据包,再发送至微信客户端。
本申请实施例中,目标代理服务器作为客户端100与业务服务器300之间的中间处理层,采用websocket协议与客户端100进行通信,与传统的采用http协议进行通信相比,节省了大量用于DNS解析以及三次握手的时间。
本申请实施例中,在对所述第一websocket数据包进行解封装之前,所述方法还包括以下步骤:
与所述客户端100协商自定义代理协议。具体地,基于websocket协议,与所述客户端100协商自定义代理协议。
图9是根据一示例性实施例示出的一种数据传输方法的另一种流程图。参照图9,所述方法包括以下步骤:
在步骤S61中,接收所述客户端100通过所述websocket通道发送的携带所述第一websocket数据包的代理请求。
其中,第一websocket数据包是客户端100基于自定义代理协议,对预备向业务服务器300发送的请求数据进行封装得到的。在步骤S62中,基于所述自定义代理协议,对所述第一websocket数据包进行解封装,得到所述请求数据。
在步骤S63中,将所述请求数据发送至所述业务服务器300。
在步骤S64中,接收所述业务服务器300返回的响应数据。
其中,响应数据与请求数据对应。
在步骤S65中,基于所述自定义代理协议,对所述响应数据进行封装,得到第二websocket数据包。
在步骤S66中,向所述客户端100发送针对所述代理请求的ACK确认响应,以及携带所述第二websocket数据包的代理响应。
本申请实施例中,由于websocket协议使用了自定义协议,因此,目标代理服务器在接收客户端100发起的请求之前,还需要与客户端100协商自定义代理协议,即双方需要统一各自使用的通信协议。当双方达成了自定义代理协议后,目标代理服务器接收客户端100发送的携带第一websocket数据包的代理请求,然后依次基于自定义代理协议从第一websocket数据包解析出请求数据、将请求数据发送至业务服务器300、接收业务服务器300的针对请求数据返回的响应数据、基于自定义代理协议将响应数据封装为第二websocket数据包、向客户端100发送针对代理请求的ACK确认响应和携带第二websocket数据包的代理响应。
所述步骤S61至所述步骤S66的具体实施过程请参照上述实施例中的详细说明。
本申请实施例中,目标代理服务器与客户端100之间通过基于websocket协议的自定义代理协议进行通信,比起通过基于http协议的ajax请求进行通信,不仅明显增加了客户端100与业务服务器300之间连接成功的概率,而且大大降低了客户端100与业务服务器300之间的通信时间。
本申请实施例中,在将所述第二websocket数据包发送至所述客户端100之后,所述方法还包括:
接收所述客户端100发送的第三websocket数据包,所述第三websocket数据包是所述客户端100在接收所述第二websocket数据包后,对下一次预备向所述业务服务器300发送的请求数据进行封装得到的。
本申请实施例中,目标代理服务器在接收到客户端100发送的第三websocket数据包之前,需将第二websocket数据包发送至客户端100。Websocket协议本身支持异步请求响应的方式,此处,目标代理服务器在接收到客户端100发送的第三websocket数据包之前首先将第二websocket数据包发送至客户端100,实现了异步响应到同步响应的转换。
基于同一发明构思,本申请另一实施例提供一种数据传输装置1000。图10是本申请一实施例提供的一种数据传输装置的示意图。参照图10,该装置1000包括:
第一封装模块1001,被配置为对待发送的请求数据进行封装,得到第一websocket数据包;
第一发送模块1002,被配置为通过websocket通道,将所述第一websocket数据包发送给所述目标代理服务器,所述目标代理服务器是所述代理服务器集群中与所述客户端100预先建立所述websocket通道的代理服务器200;
第一接收模块1003,被配置为接收所述目标代理服务器发送的第二websocket数据包,所述第二websocket数据包是所述目标代理服务器在接收到所述业务服务器300返回的响应数据后,对所述响应数据进行封装得到的;
第一解封装模块1004,被配置为对所述第二websocket数据包进行解封装,得到所述响应数据。
可选地,所述第一封装模块1001包括:
确定模块10011,被配置为从预备向所述业务服务器300发送的ajax请求中确定所述请求数据;
封装子模块10012,被配置为对所述请求数据进行封装。
可选地,所述装置1000还包括:
第一协商模块1005,被配置为与所述目标代理服务器协商自定义代理协议;
所述第一封装模块1001还包括:
第一封装子模块10013,被配置为基于所述自定义代理协议,对所述请求数据进行封装;
所述第一解封装模块1004包括:
第一解封装子模块10041,被配置为基于所述自定义代理协议,对所述第二websocket数据包进行解封装。
可选地,其特征在于,所述第一发送模块1002包括:
发送子模块10021,被配置为通过所述websocket通道,将携带所述第一websocket数据包的代理请求发送给所述目标代理服务器;
所述第一接收模块1003包括:
第一接收子模块10031,包括接收所述目标代理服务器针对所述代理请求返回的ACK确认响应,以及所述目标服务器发送的携带所述第二websocket数据包的代理响应。
可选地,所述装置1000还包括:
第二发送模块1006,被配置为在所述ACK确认响应超时且所述客户端100支持故障切换功能的情况下,通过websocket备用通道向备用代理服务器发送所述代理请求,所述备用代理服务器为所述代理服务器集群中与所述目标代理服务器不同且与所述客户端100预先建立websocket备用通道的代理服务器200;
确认模块1007,被配置为在所述ACK确认响应超时且所述客户端100不支持故障切换功能的情况下,确认所述代理请求发送失败。
可选地,所述装置1000还包括:
统计模块1008,被配置为统计所述ACK确认响应超时的连续次数;
执行模块1009,被配置为在所述连续次数超过预设次数的情况下,更换所述目标代理服务器,或者,关闭所述websocket通道。
可选地,所述装置1000还包括:
第二封装模块1010,被配置为对下一次待发送的请求数据进行封装,得到第三websocket数据包;
第三发送模块1011,被配置为通过所述websocket通道,将所述第三websocket数据包发送给所述目标代理服务器。
基于同一发明构思,本申请另一实施例提供一种数据传输装置1100。图11是一示例性实施例示出的另一种数据传输装置,应用于代理服务器集群中的目标代理服务器,所述目标代理服务器是所述代理服务器集群中与客户端100预先建立websocket通道的代理服务器200;所述代理服务器集群与所述客户端100以及业务服务器300之间分别通信连接。所述装置1100包括:
第二接收模块1101,被配置为接收所述客户端100通过所述websocket通道发送的第一websocket数据包,所述第一websocket数据包是所述客户端100对待发送的请求数据进行封装得到的;
第二解封装模块1102,被配置为对所述第一websocket数据包进行解封装,得到所述请求数据;
第四发送模块1103,被配置为将所述请求数据发送给所述业务服务器300;
第三接收模块1104,被配置为接收所述业务服务器300返回的响应数据;
第三封装模块1105,被配置为对所述响应数据进行封装,得到第二websocket数据包;
第五发送模块1106,被配置为将所述第二websocket数据包发送给所述客户端100。
可选地,所述装置1100还包括:
第二协商模块1107,被配置为与所述客户端100协商自定义代理协议;
所述第二解封装模块1102包括:
第二解封装子模块11021,被配置为基于所述自定义代理协议,对所述第一websocket数据包进行解封装;
所述第三封装模块1105包括:
第三封装子模块11051,被配置为基于所述自定义代理协议,对所述响应数据进行封装。
可选地,所述第二接收模块1101包括:
第二接收子模块11011,被配置为接收所述客户端100通过所述websocket通道发送的携带所述第一websocket数据包的代理请求;
所述第五发送模块1106包括:
第五发送子模块11061,被配置为向所述客户端100发送针对所述代理请求的ACK确认响应,以及携带所述第二websocket数据包的代理响应。
可选地,所述装置1100还包括:
第四接收模块1108,被配置为接收所述客户端100发送的第三websocket数据包,所述第三websocket数据包是所述客户端100在接收所述第二websocket数据包后,对下一次预备向所述业务服务器300发送的请求数据进行封装得到的。
基于同一发明构思,本申请另一实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请上述任一实施例所述的方法中的步骤。
基于同一发明构思,本申请另一实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行时实现本申请上述任一实施例所述的方法中的步骤。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种数据传输方法、装置、存储介质和电子设备,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (15)

1.一种数据传输方法,其特征在于,应用于客户端,所述客户端与代理服务器集群之间通信连接,所述代理服务器集群与业务服务器通信连接,所述方法包括:
对待发送的请求数据进行封装,得到第一websocket数据包;
通过websocket通道将所述第一websocket数据包发送给目标代理服务器,所述目标代理服务器是所述代理服务器集群中与所述客户端预先建立所述websocket通道的代理服务器;
接收所述目标代理服务器发送的第二websocket数据包,所述第二websocket数据包是所述目标代理服务器在接收到所述业务服务器返回的响应数据后,对所述响应数据进行封装得到的;
对所述第二websocket数据包进行解封装,得到所述响应数据。
2.根据权利要求1所述的方法,其特征在于,对待发送的请求数据进行封装,包括:
从预备向所述业务服务器发送的ajax请求中确定所述请求数据;
对所述请求数据进行封装。
3.根据权利要求1所述的方法,其特征在于,在对待发送的请求数据进行封装之前,所述方法还包括:
与所述目标代理服务器协商自定义代理协议;
对待发送的请求数据进行封装,包括:
基于所述自定义代理协议,对所述请求数据进行封装;
对所述第二websocket数据包进行解封装,包括:
基于所述自定义代理协议,对所述第二websocket数据包进行解封装。
4.根据权利要求3所述的方法,其特征在于,通过websocket通道将所述第一websocket数据包发送给目标代理服务器,包括:
通过所述websocket通道,将携带所述第一websocket数据包的代理请求发送给所述目标代理服务器;
接收所述目标代理服务器发送的第二websocket数据包,包括:
接收所述目标代理服务器针对所述代理请求返回的ACK确认响应,以及所述目标服务器发送的携带所述第二websocket数据包的代理响应。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在所述ACK确认响应超时且所述客户端支持故障切换功能的情况下,通过websocket备用通道向备用代理服务器发送所述代理请求,所述备用代理服务器为所述代理服务器集群中与所述目标代理服务器不同且与所述客户端预先建立websocket备用通道的代理服务器;
在所述ACK确认响应超时且所述客户端不支持故障切换功能的情况下,确认所述代理请求发送失败。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
统计所述ACK确认响应超时的连续次数;
在所述连续次数超过预设次数的情况下,更换所述目标代理服务器,或者,关闭所述websocket通道。
7.根据权利要求1-6任一所述的方法,其特征在于,在接收所述目标代理服务器通过所述websocket通道发送的第二websocket数据包之后,所述方法还包括:
对下一次待发送的请求数据进行封装,得到第三websocket数据包;
通过所述websocket通道,将所述第三websocket数据包发送给所述目标代理服务器。
8.一种数据传输方法,其特征在于,应用于代理服务器集群中的目标代理服务器,所述目标代理服务器是所述代理服务器集群中与客户端预先建立websocket通道的代理服务器;所述代理服务器集群与所述客户端以及业务服务器之间分别通信连接;所述方法包括:
接收所述客户端通过所述websocket通道发送的第一websocket数据包,所述第一websocket数据包是所述客户端对待发送的请求数据进行封装得到的;
对所述第一websocket数据包进行解封装,得到所述请求数据;
将所述请求数据发送给所述业务服务器;
接收所述业务服务器返回的响应数据;
对所述响应数据进行封装,得到第二websocket数据包;
将所述第二websocket数据包发送给所述客户端。
9.根据权利要求8所述的方法,其特征在于,在对所述第一websocket数据包进行解封装之前,所述方法还包括:
与所述客户端协商自定义代理协议;
对所述第一websocket数据包进行解封装,包括:
基于所述自定义代理协议,对所述第一websocket数据包进行解封装;
对所述响应数据进行封装,包括:
基于所述自定义代理协议,对所述响应数据进行封装。
10.根据权利要求9所述的方法,其特征在于,接收所述客户端通过所述websocket通道发送的第一websocket数据包,包括:
接收所述客户端通过所述websocket通道发送的携带所述第一websocket数据包的代理请求;
将所述第二websocket数据包发送给所述客户端,包括:
向所述客户端发送针对所述代理请求的ACK确认响应,以及携带所述第二websocket数据包的代理响应。
11.根据权利要求8-10任一所述的方法,其特征在于,所述代理服务器集群与业务服务器均部署在内网内,通过内网DNS服务器进行DNS解析,并通过连接池建立通信连接。
12.一种数据传输装置,其特征在于,应用于客户端,所述客户端与代理服务器集群之间通信连接,所述代理服务器集群与业务服务器通信连接;所述装置包括:
第一封装模块,被配置为对待发送的请求数据进行封装,得到第一websocket数据包;
第一发送模块,被配置为通过websocket通道,将所述第一websocket数据包发送给目标代理服务器,所述目标代理服务器是所述代理服务器集群中与所述客户端预先建立所述websocket通道的代理服务器;
第一接收模块,被配置为接收所述目标代理服务器发送的第二websocket数据包,所述第二websocket数据包是所述目标代理服务器在接收到所述业务服务器返回的响应数据后,对所述响应数据进行封装得到的;
第一解封装模块,被配置为对所述第二websocket数据包进行解封装,得到所述响应数据。
13.一种数据传输装置,其特征在于,应用于代理服务器集群中的目标代理服务器,所述目标代理服务器是所述代理服务器集群中与客户端预先建立websocket通道的代理服务器;所述代理服务器集群与所述客户端以及业务服务器之间分别通信连接;所述装置包括:
第二接收模块,被配置为接收所述客户端通过所述websocket通道发送的第一websocket数据包,所述第一websocket数据包是所述客户端对待发送的请求数据进行封装得到的;
第二解封装模块,被配置为对所述第一websocket数据包进行解封装,得到所述请求数据;
第四发送模块,被配置为将所述请求数据发送给所述业务服务器;
第三接收模块,被配置为接收所述业务服务器返回的响应数据;
第三封装模块,被配置为对所述响应数据进行封装,得到第二websocket数据包;
第五发送模块,被配置为将所述第二websocket数据包发送给所述客户端。
14.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行时实现如权利要求1-7或8-11任一所述的方法的步骤。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7或8-11任一所述的方法中的步骤。
CN201910134219.3A 2019-02-22 2019-02-22 数据传输方法、装置、电子设备及可读存储介质 Pending CN109922053A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910134219.3A CN109922053A (zh) 2019-02-22 2019-02-22 数据传输方法、装置、电子设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910134219.3A CN109922053A (zh) 2019-02-22 2019-02-22 数据传输方法、装置、电子设备及可读存储介质

Publications (1)

Publication Number Publication Date
CN109922053A true CN109922053A (zh) 2019-06-21

Family

ID=66962131

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910134219.3A Pending CN109922053A (zh) 2019-02-22 2019-02-22 数据传输方法、装置、电子设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN109922053A (zh)

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110247926A (zh) * 2019-06-28 2019-09-17 北京奇艺世纪科技有限公司 一种交互方法和系统
CN110311975A (zh) * 2019-06-28 2019-10-08 北京奇艺世纪科技有限公司 一种数据请求处理方法及装置
CN110740131A (zh) * 2019-09-30 2020-01-31 北京达佳互联信息技术有限公司 数据处理方法、装置、电子设备及存储介质
CN111405039A (zh) * 2020-03-16 2020-07-10 深圳市网心科技有限公司 一种数据透传方法、装置、系统和客户端及服务器
CN111447252A (zh) * 2020-02-19 2020-07-24 深圳点猫科技有限公司 一种基于websocket实现交互式输入的方法及系统
CN111510476A (zh) * 2020-04-03 2020-08-07 金蝶软件(中国)有限公司 通信方法、装置、计算机设备和计算机可读存储介质
CN111580993A (zh) * 2020-05-11 2020-08-25 广州虎牙信息科技有限公司 数据处理方法和装置、电子设备及存储介质
CN111611582A (zh) * 2020-05-22 2020-09-01 百度在线网络技术(北京)有限公司 用于识别页面劫持行为的方法和装置
CN112333115A (zh) * 2020-08-19 2021-02-05 深圳Tcl新技术有限公司 数据传输方法、终端设备、服务器及存储介质
CN112583926A (zh) * 2020-12-23 2021-03-30 平安银行股份有限公司 短连切换方法、系统、计算机设备和存储介质
CN112653656A (zh) * 2019-10-12 2021-04-13 华为技术有限公司 一种基于应用层协议的数据通信方法及其装置
CN112667359A (zh) * 2020-12-30 2021-04-16 深圳市科思科技股份有限公司 数据透传方法、电子设备及存储介质
CN113076362A (zh) * 2021-03-17 2021-07-06 北京达佳互联信息技术有限公司 业务执行方法及装置
CN113133107A (zh) * 2019-12-30 2021-07-16 北京百度网讯科技有限公司 用于同步信息的方法及装置
CN113315748A (zh) * 2021-03-18 2021-08-27 阿里巴巴新加坡控股有限公司 通信方法及装置
CN113326056A (zh) * 2021-06-28 2021-08-31 上海致景信息科技有限公司 数据处理方法、装置、存储介质及处理器
CN113347269A (zh) * 2021-06-24 2021-09-03 江苏创源电子有限公司 一种工业系统的数据更新方法、电子设备和存储介质
CN113630447A (zh) * 2021-07-22 2021-11-09 济南浪潮数据技术有限公司 一种基于web的云服务提供方法、系统及存储介质
CN113709232A (zh) * 2021-08-24 2021-11-26 广州文远知行科技有限公司 数据包加载方法、客户端、客户端代理、设备及存储介质
CN113765774A (zh) * 2020-11-16 2021-12-07 西安京迅递供应链科技有限公司 消息实时同步方法、装置、电子设备及介质
CN114071241A (zh) * 2020-08-06 2022-02-18 成都鼎桥通信技术有限公司 视频播放方法、系统、电子设备及存储介质
CN114172946A (zh) * 2021-12-06 2022-03-11 京东科技信息技术有限公司 请求结果发送方法、装置、电子设备和计算机可读介质
CN114979240A (zh) * 2022-07-26 2022-08-30 杭州奇思妙行网络科技有限公司 一种分布式WebSocket接入系统及方法
CN117440028A (zh) * 2023-12-07 2024-01-23 四川湖山电器股份有限公司 基于tcp的上位设备和嵌入设备交互的通信方法及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103825777A (zh) * 2014-02-14 2014-05-28 杭州华三通信技术有限公司 一种dmz服务器切换方法和装置
JP2014222455A (ja) * 2013-05-14 2014-11-27 日本電気株式会社 通信システム、プロキシサーバ、通信方法およびプログラム
US20160352588A1 (en) * 2015-05-27 2016-12-01 Elastic Beam, Inc. Scalable proxy clusters
CN107483495A (zh) * 2017-09-21 2017-12-15 浪潮软件股份有限公司 一种大数据集群主机管理方法、管理系统及服务端
CN107528891A (zh) * 2017-08-04 2017-12-29 北京恒信仪和信息技术有限公司 一种基于WebSocket的自动集群方法及其系统
CN108650286A (zh) * 2018-03-09 2018-10-12 华洋通信科技股份有限公司 一种基于Socket和WebSocket混合模式的服务器系统的实现方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014222455A (ja) * 2013-05-14 2014-11-27 日本電気株式会社 通信システム、プロキシサーバ、通信方法およびプログラム
CN103825777A (zh) * 2014-02-14 2014-05-28 杭州华三通信技术有限公司 一种dmz服务器切换方法和装置
US20160352588A1 (en) * 2015-05-27 2016-12-01 Elastic Beam, Inc. Scalable proxy clusters
CN107528891A (zh) * 2017-08-04 2017-12-29 北京恒信仪和信息技术有限公司 一种基于WebSocket的自动集群方法及其系统
CN107483495A (zh) * 2017-09-21 2017-12-15 浪潮软件股份有限公司 一种大数据集群主机管理方法、管理系统及服务端
CN108650286A (zh) * 2018-03-09 2018-10-12 华洋通信科技股份有限公司 一种基于Socket和WebSocket混合模式的服务器系统的实现方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
周忠庆等: "《HTML5 & CSS3 & JavaScript App程序开发实践》", 31 May 2014, 中国铁道出版社 *
杨欣: "《基于Web的实时通信系统与关键技术研究》", 《中国优秀硕士学位论文全文数据库(电子期刊)》 *

Cited By (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110311975A (zh) * 2019-06-28 2019-10-08 北京奇艺世纪科技有限公司 一种数据请求处理方法及装置
CN110247926A (zh) * 2019-06-28 2019-09-17 北京奇艺世纪科技有限公司 一种交互方法和系统
CN110740131A (zh) * 2019-09-30 2020-01-31 北京达佳互联信息技术有限公司 数据处理方法、装置、电子设备及存储介质
CN112653656A (zh) * 2019-10-12 2021-04-13 华为技术有限公司 一种基于应用层协议的数据通信方法及其装置
CN113133107B (zh) * 2019-12-30 2022-12-23 北京百度网讯科技有限公司 用于同步信息的方法及装置
CN113133107A (zh) * 2019-12-30 2021-07-16 北京百度网讯科技有限公司 用于同步信息的方法及装置
CN111447252B (zh) * 2020-02-19 2023-09-26 深圳点猫科技有限公司 一种基于websocket实现交互式输入的方法及系统
CN111447252A (zh) * 2020-02-19 2020-07-24 深圳点猫科技有限公司 一种基于websocket实现交互式输入的方法及系统
CN111405039A (zh) * 2020-03-16 2020-07-10 深圳市网心科技有限公司 一种数据透传方法、装置、系统和客户端及服务器
CN111510476A (zh) * 2020-04-03 2020-08-07 金蝶软件(中国)有限公司 通信方法、装置、计算机设备和计算机可读存储介质
CN111580993B (zh) * 2020-05-11 2024-05-17 广州虎牙信息科技有限公司 数据处理方法和装置、电子设备及存储介质
CN111580993A (zh) * 2020-05-11 2020-08-25 广州虎牙信息科技有限公司 数据处理方法和装置、电子设备及存储介质
CN111611582A (zh) * 2020-05-22 2020-09-01 百度在线网络技术(北京)有限公司 用于识别页面劫持行为的方法和装置
CN111611582B (zh) * 2020-05-22 2023-08-25 百度在线网络技术(北京)有限公司 用于识别页面劫持行为的方法和装置
CN114071241A (zh) * 2020-08-06 2022-02-18 成都鼎桥通信技术有限公司 视频播放方法、系统、电子设备及存储介质
CN112333115A (zh) * 2020-08-19 2021-02-05 深圳Tcl新技术有限公司 数据传输方法、终端设备、服务器及存储介质
CN112333115B (zh) * 2020-08-19 2024-02-09 深圳Tcl新技术有限公司 数据传输方法、终端设备、服务器及存储介质
CN113765774A (zh) * 2020-11-16 2021-12-07 西安京迅递供应链科技有限公司 消息实时同步方法、装置、电子设备及介质
CN113765774B (zh) * 2020-11-16 2023-05-02 西安京迅递供应链科技有限公司 消息实时同步方法、装置、电子设备及介质
CN112583926B (zh) * 2020-12-23 2023-04-07 平安银行股份有限公司 短连切换方法、系统、计算机设备和存储介质
CN112583926A (zh) * 2020-12-23 2021-03-30 平安银行股份有限公司 短连切换方法、系统、计算机设备和存储介质
CN112667359A (zh) * 2020-12-30 2021-04-16 深圳市科思科技股份有限公司 数据透传方法、电子设备及存储介质
CN112667359B (zh) * 2020-12-30 2024-01-30 深圳市科思科技股份有限公司 数据透传方法、电子设备及存储介质
CN113076362A (zh) * 2021-03-17 2021-07-06 北京达佳互联信息技术有限公司 业务执行方法及装置
CN113076362B (zh) * 2021-03-17 2024-02-23 北京达佳互联信息技术有限公司 业务执行方法及装置
CN113315748A (zh) * 2021-03-18 2021-08-27 阿里巴巴新加坡控股有限公司 通信方法及装置
CN113347269A (zh) * 2021-06-24 2021-09-03 江苏创源电子有限公司 一种工业系统的数据更新方法、电子设备和存储介质
CN113326056A (zh) * 2021-06-28 2021-08-31 上海致景信息科技有限公司 数据处理方法、装置、存储介质及处理器
CN113630447A (zh) * 2021-07-22 2021-11-09 济南浪潮数据技术有限公司 一种基于web的云服务提供方法、系统及存储介质
CN113709232A (zh) * 2021-08-24 2021-11-26 广州文远知行科技有限公司 数据包加载方法、客户端、客户端代理、设备及存储介质
CN113709232B (zh) * 2021-08-24 2024-05-17 广州文远知行科技有限公司 数据包加载方法、客户端、客户端代理、设备及存储介质
CN114172946A (zh) * 2021-12-06 2022-03-11 京东科技信息技术有限公司 请求结果发送方法、装置、电子设备和计算机可读介质
CN114979240A (zh) * 2022-07-26 2022-08-30 杭州奇思妙行网络科技有限公司 一种分布式WebSocket接入系统及方法
CN117440028A (zh) * 2023-12-07 2024-01-23 四川湖山电器股份有限公司 基于tcp的上位设备和嵌入设备交互的通信方法及系统

Similar Documents

Publication Publication Date Title
CN109922053A (zh) 数据传输方法、装置、电子设备及可读存储介质
CN108200165B (zh) 请求传输系统、方法、装置及存储介质
CN104113879B (zh) 部署有云AC的WiFi通信系统和通信方法
CN107948324B (zh) 请求传输系统、方法、装置及存储介质
CN104854843B (zh) 在通信系统中的客户端设备的web浏览器上加载重定向的web页面
US10250646B2 (en) Method and device for establishing channel
CN104580192B (zh) 应用程序的网络访问请求的处理方法和装置
CN108200158B (zh) 请求传输系统、方法、装置及存储介质
CN104796396A (zh) 提供用于基于策略的应用代理的网络代理层的方法和介质
JP6990649B2 (ja) 高速アクセステレコミュニケーショントンネルクローニング
CN108494817A (zh) 数据传输方法、相关装置及系统
US11284254B2 (en) Service-based 5G core authentication endpoints
US10608985B2 (en) Multihoming for tunneled encapsulated media
US10924533B2 (en) System, apparatus and method for load balancing
JP6983218B2 (ja) データグラムベースのトランスポート層を介したカプセル化メディアトラフィックの効率的転送
CN112073545B (zh) 使用dns来传送服务器设备的mp-tcp能力
CN109302437A (zh) 一种重定向网站的方法和装置
EP4246936A1 (en) Data processing method, function device and readable storage medium
WO2021169291A1 (zh) 发布路由的方法、网元、系统及设备
CN108234149A (zh) 一种网络请求的管理方法和装置
WO2019011142A1 (zh) 一种进行网络链路切换的方法和系统
CN107682472A (zh) 基于RTSP 反向代理的IPv4与IPv6互通方法、装置及系统
CN109951493A (zh) 一种网络互通方法、装置、设备及存储介质
EP3424198A1 (en) Content distribution and delivery optimization in a content delivery network (cdn)
CN108494751A (zh) 高效使用IPv4公有地址的方法及装置

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20190621

RJ01 Rejection of invention patent application after publication