CN116800765A - P2p点对点数据节流加速实现方法、装置和存储介质 - Google Patents
P2p点对点数据节流加速实现方法、装置和存储介质 Download PDFInfo
- Publication number
- CN116800765A CN116800765A CN202310866516.3A CN202310866516A CN116800765A CN 116800765 A CN116800765 A CN 116800765A CN 202310866516 A CN202310866516 A CN 202310866516A CN 116800765 A CN116800765 A CN 116800765A
- Authority
- CN
- China
- Prior art keywords
- data
- connection
- client
- signaling server
- point
- 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 55
- 230000001133 acceleration Effects 0.000 title claims abstract description 28
- 230000011664 signaling Effects 0.000 claims abstract description 50
- 238000004891 communication Methods 0.000 claims abstract description 23
- 238000012546 transfer Methods 0.000 claims abstract description 18
- 238000005516 engineering process Methods 0.000 claims abstract description 16
- 230000000149 penetrating effect Effects 0.000 claims abstract description 4
- 238000004590 computer program Methods 0.000 claims description 11
- 230000035515 penetration Effects 0.000 claims description 7
- 238000011161 development Methods 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 abstract description 11
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000006798 recombination Effects 0.000 description 2
- 238000005215 recombination Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明提供了一种P2P点对点数据节流加速实现方法、装置和存储介质,所述方法包括:通过GO语言搭建数据缓存及数据中转的RESTfulAPI服务,开发P2PWebServer信令服务器;部署NAT穿透工具,获取WebRTC客户端的外部IP地址和端口号,建立设备之间的直接通信;基于WebRTC技术通过JavaScript开发P2PWebClient客户端,建立P2P的连接并进行数据分享;部署所述P2PWebServer信令服务器和P2PWebClient客户端,通过P2P的连接分享数据,通过上述方法,在不借助中间媒介,不需安装任何插件或者第三方软件的情况下,建立浏览器之间点对点的连接,实现视频流或音频流或者其他任意数据的传输,用于降低CDN部署成本,以及提高网络数据传输效率。
Description
技术领域
本发明涉及数据节流技术领域,特别是一种P2P点对点数据节流加速实现方法、装置和存储介质。
背景技术
内容分发网络(Content Delivery Network,CDN)是指一组分布在不同地理位置的服务器,允许快速传输加载互联网内容所需的资源,协同工作以提供互联网内容的快速交付。CDN在不断加速互联网边缘下载速度、减少核心网冗余流量传输、巩固网络安全的过程中,逐渐发展成为互联网的基础设施,为互联网上的各类App和Web站点等提供动/静态内容加速、实时流媒体加速等功能。
CDN架构通常由以下部分组成:1)前端用户:指访问网站的用户,他们通过浏览器发起请求。2)原始服务器:存储着网站的源代码和数据,并提供服务。3)缓存服务器:位于全球不同地区的数据中心,缓存原始服务器的内容以提高访问速度。4)路由器/交换机:帮助将请求从用户发送到最近的缓存服务器或原始服务器。5)全局负载均衡器:决定哪个缓存服务器最适合响应用户请求。6)数据库:存储网站所需的数据。7)监控系统:监测网络流量、性能和安全风险等方面的数据。8)安全防护系统:保护网络免受恶意攻击。
目前,CDN存在一些明显的劣势,比如:成本较高,使用CDN服务需要付费,对于一些小型应用或网站来说会增加运营成本,另外,CDN节点部署不够全面:虽然CDN服务已经建立了很多节点,但是仍然可能存在一些地区没有覆盖到,导致访问速度受到影响,降低了网络数据传输效率。
发明内容
本发明提供了一种P2P点对点数据节流加速实现方法、装置和存储介质,用于降低CDN部署成本,以及提高网络数据传输效率。
第一方面,提供了一种P2P点对点数据节流加速实现方法,包括:
通过GO语言搭建数据缓存及数据中转的RESTfulAPI(表现层状态转化式接口)服务,开发P2PWebServer信令服务器;
部署NAT(网络地址转换)穿透工具,获取WebRTC(网页实时通信)客户端的外部IP地址和端口号,建立设备之间的直接通信;
基于WebRTC技术通过JavaScript开发P2PWebClient客户端,建立P2P的连接并进行数据分享;
部署所述P2PWebServer信令服务器和P2PWebClient客户端,通过建立的P2P连接分享数据。
在一种实施方式中,通过GO语言搭建数据缓存及数据中转的RESTfulAPI服务,开发P2PWebServer信令服务器,具体包括:
通过GO语言搭建数据缓存及数据中转的RESTfulAPI服务,在WebRTC的各个客户端建立连接时,交换元数据,并缓存各个客户端的资源状态相关信息。
在一种实施方式中,所述P2P连接的建立包括数据发送端P2P连接的建立和数据接收端P2P连接的建立。
在一种实施方式中,所述数据发送端P2P连接的建立主要包括以下步骤:
使用RTCPeerConnectionAPI(实时端点连接接口)创建一个RTCPeerConnection对象并指定ICE服务器;
调用RTCPeerConnection对象的数据通道建立createDataChannel()创建一个数据通道;
通过调用RTCPeerConnection对象的createOffer()方法,创建一个offer,所述offer包含本地媒体流的信息和连接的约束条件;
设置创建所述offer时拿到的本地描述符到RTCPeerConnection对象中;
发送RTCPeerConnection对象的本地offer描述信息至P2PWebServer信令服务器;
等待并接收P2PWebServer信令服务器推送的answer描述信息,以及解析answer中的信息并将其设置为远程端的描述符,所述answer描述信息是远端待连接客户端提供的;
通过指定的ICE服务器,数据发送端与数据接收端之间开始交换ICE候选地址,直到找到一个可用的网络路径,建立连接。
在一种实施方式中,所述数据接收端P2P连接的建立主要包括以下步骤:
接收P2PWebServer信令服务器推送的offer描述信息并解析offer中的信息;
使用RTCPeerConnectionAPI创建一个RTCPeerConnection对象,并指定ICE服务器,同时将接收到的远端offer信息作为远程描述符设置到RTCPeerConnection对象中;
调用RTCPeerConnection对象的createDataChannel()创建一个数据通道,待连接建立后,通过所述数据通道发送数据并指定negotiated:true参数;
调用RTCPeerConnection对象的createAnswer()方法,创建一个answer,所述answer包含本地媒体流的信息和连接的约束条件;
设置创建answer时拿到的本地描述符到RTCPeerConnection对象中;
发送RTCPeerConnection对象的本地answer描述信息至P2PWebServer信令服务器;
通过指定的ICE服务器,数据发送端与数据接收端之间开始交换ICE候选地址,直到找到一个可用的网络路径,建立连接。
在一种实施方式中,通过建立的P2P连接分享数据,具体包括:
根据内容分发网络CDN,数据发送端获取原始资源,并以数组缓冲arraybuffer的形式存储所述原始资源在本地浏览器的内存缓存中;
当数据发送端与数据接收端建立连接且数据接收端向数据发送端请求资源时,若数据发送端判断自身存在数据接收端请求的资源时,则将资源的arraybuffer通过的切片slice方法进行指定长度的切片;
根据所述切片,在每个切片头部加上8个字节的控制信息,所述控制信息包含切片总数以及当前切片的编号;
数据发送端调用DataChannel的send发送方法将每个切片以arraybuffer的形式发送给数据接收端;
根据在数据通道DataChannel上面收到onmessage消息,数据接收端本地缓存接收到的数据,并判断本地缓存收到的切片总数是否已经达到完整资源的切片总数,若已达到则重组资源切片;
创建一个新的8位无符号整型数组Uint8Array,同时遍历所有接收到的切片,剥离出每个切片对应的前8个字节,获取切片的位置并调用Uint8Array实体的set方法将每个切片插入到指定的位置,所述Uint8Array实体对应的arraybuffer的内容为请求资源的完整内容。
在一种实施方式中,部署所述P2PWebServer信令服务器和P2PWebClient客户端,通过P2P的连接分享数据,具体包括:
以服务的方式单独部署P2PWebServer信令服务器和网络协议服务器STUNServer,以类库引入的方式嵌入P2PWebClient客户端到应用前端实现中,通过配置建立P2P连接使用的信令服务器及STUN Server的地址,实现P2P的连接及数据共享。
第二方面,提供了一种P2P点对点数据节流加速实现装置,包括:
信令服务器开发模块,用于通过GO语言搭建数据缓存及数据中转的RESTfulAPI服务,开发P2PWebServer信令服务器;
部署模块,用于部署NAT穿透工具,获取WebRTC客户端的外部IP地址和端口号,建立设备之间的直接通信;
连接建立模块,用于基于WebRTC技术通过JavaScript开发P2PWebClient客户端,建立P2P的连接并进行数据分享;
数据分享模块,用于部署所述P2PWebServer信令服务器和P2PWebClient客户端,通过建立的P2P连接分享数据。
第三方面,提供一种计算装置,包括至少一个处理器以及至少一个存储器,其中,所述存储器存储有计算机程序,所述存储器,用于读取存储器中的计算机程序,执行上述第一方面提供P2P点对点数据节流加速实现方法所述的任一步骤。
第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述第一方面提供的P2P点对点数据节流加速实现所述的任一步骤。
本发明实施例提供的一种P2P点对点数据节流加速实现方法、装置和存储介质,所述方法包括:通过GO语言搭建数据缓存及数据中转的RESTfulAPI服务,开发P2PWebServer信令服务器;部署NAT穿透工具,获取WebRTC客户端的外部IP地址和端口号,建立设备之间的直接通信;基于WebRTC技术通过JavaScript开发P2PWebClient客户端,建立P2P的连接并进行数据分享;部署所述P2PWebServer信令服务器和P2PWebClient客户端,通过建立的P2P连接分享数据,通过上述方法,在不借助中间媒介,不需安装任何插件或者第三方软件的情况下,建立浏览器之间点对点的连接,实现视频流或音频流或者其他任意数据的传输,降低CDN网络运营成本,及节点不够全面的问题,提高网络传输效率。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以其附图中特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为根据本发明实施方式的P2P点对点数据节流加速实现方法流程图;
图2为根据本发明实施方式的通过WebRTC技术建立P2P连接发送端与接收端操作步骤示意图;
图3为根据本发明实施方式的P2P点对点数据节流加速实现装置结构图。
具体实施方式
为了解决高运营成本,及节点不够全面的问题,提供了一种P2P点对点数据节流加速实现方法、装置和存储介质。
首先对本发明实施例涉及的技术术语进行介绍:
WebRTC(Web Real-Time Communication)是一种开放的实时通信技术,它允许在Web浏览器之间进行点对点的音频、视频和数据传输,而无需使用插件或其他第三方软件。它被设计为一种跨平台的技术,可以在多种设备和操作系统上使用,包括桌面电脑、移动设备和IoT设备。WebRTC使用JavaScriptAPI和标准的Web技术,如HTML和CSS,使开发者能够轻松地将实时通信功能集成到他们的Web应用程序中,其目标是提供高质量、低延迟、安全的实时通信服务。
WebRTC由以下几个主要组成部分组成:1)信令:用于建立和维护连接的控制信令。2)载体引擎:用于音频、视频和数据传输的核心引擎。3)NAT穿透:用于在不同网络上的设备之间建立连接的网络地址转换技术。此外,WebRTC还包括一些其他关键组件,例如ICE(Interactive Connectivity Establishment)协议、STUN(Session Traversal UtilitiesforNAT)服务器等,这些组件共同实现了WebRTC的实时通信功能。
以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
如图1所示,实施例提供了一种P2P点对点数据节流加速实现方法,具体实施流程包括:
S11、通过GO语言搭建数据缓存及数据中转的RESTfulAPI服务,开发P2PWebServer信令服务器。
具体实施时,信令服务器的实现,主要是通过GO语言来搭建一套数据缓存及数据中转的RESTfulAPI服务,通过这些服务,实现WebRTC的各个客户端在建立连接时,交换需要用到的元数据。
在一种实施方式中,交换SDP(会话描述协议)和ICE(交互式连接建立)候选者信息,以及在数据分享过程中,缓存各个客户端的资源状态相关信息,以便后续有新的客户端请求资源时,能快速判断出请求资源是否已有在线的客户端可提供分享。如果发现有客户端能提供分享,则直接让已在线的客户端跟新连接的客户端之间建立连接,尝试数据的分享,这样请求的资源就不会再到CDN处去获取,达到了节约流量成本的目的,同时如果有多个在线的客户端可以提供数据,那么可以尝试新客户端跟这些在线客户端都建立连接,进行数据的实时分享,这样也就加快了数据的获取速度。
S12、部署NAT穿透工具,获取WebRTC客户端的外部IP地址和端口号,建立设备之间的直接通信。
具体实施时,如图2所示,部署NAT穿透工具,主要是部署STUN Server,WebRTC客户端可以通过STUN Server获取自己的外部IP地址和端口号,以便向对方发送连接请求,在NAT环境下实现两个设备之间的直接通信。
S13、基于WebRTC技术通过JavaScript开发P2PWebClient客户端,建立P2P的连接并进行数据分享。
具体实施时,基于WebRTC相关技术通过JavaScript编写客户端程序的实现,主要是实现P2P连接的建立、数据的请求、P2P分享数据时对数据进行切片与重组。
在一种实施方式中,针对数据的发送端创建P2P连接的主要步骤为:
1.使用RTCPeerConnectionAPI创建一个RTCPeerConnection对象,这个对象用于管理连接,并指定ICE服务器(STUN Server的地址)。
2.调用RTCPeerConnection对象的createDataChannel()创建一个数据通道,待后续有新的客户端连接到当前客户端时,通过该通道来进行数据的发送。
3.通过调用RTCPeerConnection对象的createOffer()方法,创建一个offer,这个offer包含了本地媒体流的信息和一些连接的约束条件。
4.将创建offer时拿到的本地描述符设置到RTCPeerConnection对象中。
5.将RTCPeerConnection对象的本地offer描述信息发送给信令服务器。
6.等待并接收信令服务器推送的:远端待连接客户端提供的answer描述信息,解析answer中的信息并将其设置为远程端的描述符。
7.通过ICE服务器,双方开始交换ICE候选地址,直到找到一个可用的网络路径,建立连接。
后续可通过创建出的数据通道开始进行数据的传输。
在一种实施方式中,针对数据的接收端创建P2P连接的主要步骤为:
1.接收到信令服务器推送的offer描述信息后,解析offer中的信息
2.使用RTCPeerConnectionAPI创建一个RTCPeerConnection对象,并指定:ICE服务器(STUN Server的地址),同时将接收到的远端offer信息作为远程描述符设置到RTCPeerConnection对象中。
3.调用RTCPeerConnection对象的createDataChannel()创建一个数据通道,待连接建立后,通过该通道来进行数据的发送。此处需要指定negotiated:true参数,表示与提供offer的远端客户端使用同一个数据通道进行通信。
4.调用RTCPeerConnection对象的createAnswer()方法,创建一个answer,这个answer包含了本地媒体流的信息和一些连接的约束条件。
5.将创建answer时拿到的本地描述符设置到RTCPeerConnection对象中。
6.将RTCPeerConnection对象的本地answer描述信息发送给信令服务器。
7.通过ICE服务器,双方开始交换ICE候选地址,直到找到一个可用的网络路径,建立连接。
后续可通过创建出的数据通道开始进行数据的传输。
在一种实施方式中,针对数据分享时对数据进行切片与重组的主要方法如下:
1.发送端会先从CDN处获取到原始资源,并以arraybuffer的形式存储在本地浏览器的内存缓存中。
2.当发送端与接收端建立连接且接收端向发送端请求资源时,发送端判断自身存在接收端需要的资源时,则将资源的arraybuffer通过浏览器原生支持的slice方法进行指定长度的切片。此处需要注意切片长度尽量不要超过64KB,是由于不同浏览器对DataChannel数据通道每次能发送的最大数据长度有不同的限制,64KB以内各浏览器进行数据传输时都稳定性较高。
3.在每个切片头部加上8个字节的控制信息,主要包含切片总数以及当前切片的编号,以便后续重组切片时,能够正确的指定切片的位置。
4.发送端调用DataChannel的send方法将每个切片以arraybuffer的形式发送给接收端。
5.接收端在DataChannel上面收到onmessage消息,在该消息的回调处理中对接收到的数据进行本地缓存,每次接收完数据后会都判断本本地缓存收到的切片总数是否已经达到完整资源的切片总数,如果已达到则开始资源切片的重组。
6.资源切片重组时,会创建一个新的Uint8Array来接受重组的切片内容,同时会遍历所有接收到的切片,剥离出每个切片对应的前8个字节,拿到切片的位置,并调用Uint8Array实体的set方法将每个切片插入到指定的位置,最后Uint8Array实体对应的arraybuffer的内容就是请求资源的完整内容。
S14、部署所述P2PWebServer信令服务器和P2PWebClient客户端,通过建立的P2P连接分享数据。
具体实施时,将P2PWebServer及STUN Server以服务的方式单独进行部署,将P2PWebClient以类库引入的方式嵌入到应用前端实现中,通过配置建立P2P连接使用的信令服务器及STUN Server的地址,实现P2P数据的连接及数据共享。
实施例提供了一种P2P点对点数据节流加速实现方法,关键技术点为:
1、信令服务器的实现:WebRTC建立连接时,通过GO语言实现信令服务器,信令服务器主要用于协调通信双方之间的连接,以便它们可以交换元数据。在建立连接时,每个端需要创建一个RTCPeerConnection对象,并通过信令服务器,两台计算机可以交换信令信息,协商建立连接的相关参数和配置。
2、数据切片与重组算法的实现:数据传输时,通信发送方需要对各种数据通过JavaScript进行切片,并标记每个切片的属性,然后通过DataChannel(数据通道)发送数据,通信接收端收到数据后,需要对切片进行重组,转换成正确的,完整可用的数据资源。
通过本发明提出的一种通过浏览器原生支持的WebRTC实时通讯技术为网络应用或者站点,在不借助中间媒介,不需安装任何插件或者第三方软件的情况下,建立浏览器之间点对点的连接,实现视频流或音频流或者其他任意数据的传输。这样可以缓解传统CDN的高运营成本及节点不够全面相关问题。
基于相同的技术构思,本申请实施例还提供了一种P2P点对点数据节流加速实现装置,由于所述装置解决问题的原理与用于P2P点对点数据节流加速实现方法相似,因此,所述装置的实施可以参见方法的实施,重复之处不再赘述。
如图3所示,实施例提供了一种P2P点对点数据节流加速实现装置,包括:
信令服务器开发模块31,用于通过GO语言搭建数据缓存及数据中转的RESTfulAPI服务,开发P2PWebServer信令服务器;
部署模块32,用于部署NAT穿透工具,获取WebRTC客户端的外部IP地址和端口号,建立设备之间的直接通信;
连接建立模块33,用于基于WebRTC技术通过JavaScript开发P2PWebClient客户端,建立P2P的连接并进行数据分享;
数据分享模块34,用于部署所述P2PWebServer信令服务器和P2PWebClient客户端,通过P2P的连接分享数据。
为了描述方便,以上各部分按照功能模块划分为各模块(或单元)分别描述。当然,在实施例本发明时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
在介绍了本发明示例性实施方式的P2P点对点数据节流加速实现方法和装置之后,接下来,介绍根据本发明的另一示例性实施方式的计算装置。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。在一些可能的实施方式中,根据本发明的计算装置可以至少包括至少一个处理器以及至少一个存储器。其中,所述存储器存储有程序代码。当所述程序代码被所述处理器执行时,使得所述处理器执行本发明书上述描述的根据本发明各种示例性实施方式的P2P点对点数据节流加速实现方法中的步骤。例如,所述处理器可执行如图1中所示的步骤S11、通过GO语言搭建数据缓存及数据中转的RESTfulAPI服务,开发P2PWebServer信令服务器;和步骤S12、部署NAT穿透工具,获取WebRTC客户端的外部IP地址和端口号,建立设备之间的直接通信;以及步骤S13、基于WebRTC技术通过JavaScript开发P2PWebClient客户端,建立P2P的连接并进行数据分享;步骤S14、部署所述P2PWebServer信令服务器和P2PWebClient客户端,通过建立的P2P连接分享数据。
在一些可能的实施方式中,本发明提供的P2P点对点数据节流加速实现方法的各个方面还可以实现为一种程序产品形式,其包括程序代码,当所述程序产品在计算机设备上运行时,所述程序代码用于使所述计算机设备执行本说明书上述描述的根据本发明各种示例性实施方式P2P点对点数据节流加速实现方法中的步骤,例如,所述计算机设备可以执行如图1中所示的步骤S11、通过GO语言搭建数据缓存及数据中转的RESTfulAPI服务,开发P2PWebServer信令服务器;和步骤S12、部署NAT穿透工具,获取WebRTC客户端的外部IP地址和端口号,建立设备之间的直接通信;以及步骤S13、基于WebRTC技术通过JavaScript开发P2PWebClient客户端,建立P2P的连接并进行数据分享;步骤S14、部署所述P2PWebServer信令服务器和P2PWebClient客户端,通过建立的P2P连接分享数据。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是一但不限于电、磁、光、电磁、红外线或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的例表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。本发明的实施方式用于P2P点对点数据节流加速实现的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在计算设备上运行。然而,本发明的程序产品不限于此,在本发明中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合和使用。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定功能的装置。
这些计算机程序指令也可存储在引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种P2P点对点数据节流加速实现方法,其特征在于,包括:
通过GO语言搭建数据缓存及数据中转的RESTfulAPI服务,开发P2PWebServer信令服务器;
部署NAT穿透工具,获取WebRTC客户端的外部IP地址和端口号,建立设备之间的直接通信;
基于WebRTC技术通过JavaScript开发P2PWebClient客户端,建立P2P的连接并进行数据分享;
部署所述P2PWebServer信令服务器和P2PWebClient客户端,通过建立的P2P连接分享数据。
2.根据权利要求1所述的方法,其特征在于,通过GO语言搭建数据缓存及数据中转的RESTfulAPI服务,开发P2PWebServer信令服务器,具体包括:
通过GO语言搭建数据缓存及数据中转的RESTfulAPI服务,在WebRTC的各个客户端建立连接时,交换元数据,并缓存各个客户端的资源状态相关信息。
3.根据权利要求2所述的方法,其特征在于,所述P2P连接的建立包括数据发送端P2P连接的建立和数据接收端P2P连接的建立。
4.根据权利要求3所述的方法,其特征在于,所述数据发送端P2P连接的建立主要包括以下步骤:
使用RTCPeerConnectionAPI创建一个RTCPeerConnection对象并指定ICE服务器;
调用RTCPeerConnection对象的createDataChannel()创建一个数据通道;
通过调用RTCPeerConnection对象的createOffer()方法,创建一个offer,所述offer包含本地媒体流的信息和连接的约束条件;
设置创建所述offer时拿到的本地描述符到RTCPeerConnection对象中;
发送RTCPeerConnection对象的本地offer描述信息至P2PWebServer信令服务器;
等待并接收P2PWebServer信令服务器推送的answer描述信息,以及解析answer中的信息并将其设置为远程端的描述符,所述answer描述信息是远端待连接客户端提供的;
通过指定的ICE服务器,数据发送端与数据接收端之间开始交换ICE候选地址,直到找到一个可用的网络路径,建立连接。
5.根据权利要求3所述的方法,其特征在于,所述数据接收端P2P连接的建立主要包括以下步骤:
接收P2PWebServer信令服务器推送的offer描述信息并解析offer中的信息;
使用RTCPeerConnectionAPI创建一个RTCPeerConnection对象,并指定ICE服务器,同时将接收到的远端offer信息作为远程描述符设置到RTCPeerConnection对象中;
调用RTCPeerConnection对象的createDataChannel()创建一个数据通道,待连接建立后,通过所述数据通道发送数据并指定negotiated:true参数;
调用RTCPeerConnection对象的createAnswer()方法,创建一个answer,所述answer包含本地媒体流的信息和连接的约束条件;
设置创建answer时拿到的本地描述符到RTCPeerConnection对象中;
发送RTCPeerConnection对象的本地answer描述信息至P2PWebServer信令服务器;
通过指定的ICE服务器,数据发送端与数据接收端之间开始交换ICE候选地址,直到找到一个可用的网络路径,建立连接。
6.根据权利要求3、4或5所述的方法,其特征在于,通过建立的P2P连接分享数据,具体包括:
根据内容分发网络CDN,数据发送端获取原始资源,并以数组缓冲arraybuffer的形式存储所述原始资源在本地浏览器的内存缓存中;
当数据发送端与数据接收端建立连接且数据接收端向数据发送端请求资源时,若数据发送端判断自身存在数据接收端请求的资源时,则将资源的arraybuffer通过切片slice方法进行指定长度的切片;
根据所述切片,在每个切片头部加上8个字节的控制信息,所述控制信息包含切片总数以及当前切片的编号;
数据发送端调用数据通道DataChannel的发送send方法将每个切片以arraybuffer的形式发送给数据接收端;
根据在DataChannel上面收到的onmessage消息,数据接收端本地缓存接收到的数据,并判断本地缓存收到的切片总数是否已经达到完整资源的切片总数,若已达到则重组资源切片;
创建一个新的8位无符号整型数组Uint8Array,同时遍历所有接收到的切片,剥离出每个切片对应的前8个字节,获取切片的位置并调用Uint8Array实体的设置set方法将每个切片插入到指定的位置,所述Uint8Array实体对应的arraybuffer的内容为请求资源的完整内容。
7.根据权利要求3所述的方法,其特征在于,部署所述P2PWebServer信令服务器和P2PWebClient客户端,通过建立的P2P连接分享数据,具体包括:
以服务的方式单独部署P2PWebServer信令服务器和网络协议服务器STUNServer,以类库引入的方式嵌入P2PWebClient客户端到应用前端实现中,通过配置建立P2P连接使用的信令服务器及STUNServer的地址,实现P2P的连接及数据共享。
8.一种P2P点对点数据节流加速实现装置,其特征在于,包括:
信令服务器开发模块,用于通过GO语言搭建数据缓存及数据中转的RESTfulAPI服务,开发P2PWebServer信令服务器;
部署模块,用于部署NAT穿透工具,获取WebRTC客户端的外部IP地址和端口号,建立设备之间的直接通信;
连接建立模块,用于基于WebRTC技术通过JavaScript开发P2PWebClient客户端,建立P2P的连接并进行数据分享;
数据分享模块,用于部署所述P2PWebServer信令服务器和P2PWebClient客户端,通过建立的P2P连接分享数据。
9.一种计算装置,其特征在于,包括至少一个处理器以及至少一个存储器,其中,所述存储器存储有计算机程序,所述处理器,用于读取存储器中的计算机程序,执行权利要求1~7任一权利要求所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行权利要求1~7任一权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310866516.3A CN116800765A (zh) | 2023-07-14 | 2023-07-14 | P2p点对点数据节流加速实现方法、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310866516.3A CN116800765A (zh) | 2023-07-14 | 2023-07-14 | P2p点对点数据节流加速实现方法、装置和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116800765A true CN116800765A (zh) | 2023-09-22 |
Family
ID=88048056
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310866516.3A Pending CN116800765A (zh) | 2023-07-14 | 2023-07-14 | P2p点对点数据节流加速实现方法、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116800765A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117544632A (zh) * | 2024-01-10 | 2024-02-09 | 城云科技(中国)有限公司 | 多终端中浏览器页面直接交互的方法、系统及其应用 |
-
2023
- 2023-07-14 CN CN202310866516.3A patent/CN116800765A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117544632A (zh) * | 2024-01-10 | 2024-02-09 | 城云科技(中国)有限公司 | 多终端中浏览器页面直接交互的方法、系统及其应用 |
CN117544632B (zh) * | 2024-01-10 | 2024-03-29 | 城云科技(中国)有限公司 | 多终端中浏览器页面直接交互的方法、系统及其应用 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108259542B (zh) | 资源的传输方法和装置 | |
US10491657B2 (en) | Network acceleration method, apparatus and device based on router device | |
EP3275162B1 (en) | Systems and techniques for web communication | |
CN108200165B (zh) | 请求传输系统、方法、装置及存储介质 | |
WO2017092351A1 (zh) | 缓存数据的更新方法及装置 | |
US8984164B2 (en) | Methods for reducing latency in network connections and systems thereof | |
CN111147506A (zh) | 一种基于html5播放流媒体数据的方法、系统及存储设备 | |
CN113596191A (zh) | 一种数据处理方法、网元设备以及可读存储介质 | |
CN108418847B (zh) | 一种网络流量缓存系统、方法及装置 | |
WO2011088725A1 (zh) | 基于http的同步方法和装置 | |
WO2023138189A1 (zh) | 数据处理方法、装置、设备以及介质 | |
WO2023103318A1 (zh) | 媒体流传输方法和系统 | |
US8868638B2 (en) | Methods for reducing latency in network connections using automatic redirects and systems thereof | |
CN116800765A (zh) | P2p点对点数据节流加速实现方法、装置和存储介质 | |
US20120242841A1 (en) | System and method for transmitting real-time images | |
CN118018517A (zh) | 一种数据处理方法、网元设备以及可读存储介质 | |
Du et al. | Proposal of GRPC as a new northbound API for application layer communication efficiency in SDN | |
CN112165449B (zh) | web应用实时权限的控制方法、电子装置和存储介质 | |
Bach et al. | Exploring HTTP/2 advantages and performance analysis using Java 9 | |
KR20210056180A (ko) | 엣지 컴퓨팅 서비스를 이용하여 웹 서비스를 제공하기 위한 방법 및 장치 | |
US20130024543A1 (en) | Methods for generating multiple responses to a single request message and devices thereof | |
US10880393B2 (en) | Method for caching a piece of content in a content distribution network | |
US11086822B1 (en) | Application-based compression | |
US11960407B1 (en) | Cache purging in a distributed networked system | |
CN114448652B (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 |