面向自研WebRTC服务的两级SDP重构方法、装置与流程

摘要: 本技术涉及计算机,具体而言,涉及面向自研webrtc服务的两级sdp重构方法、装置。背景技术:1、在基于浏览器的标准webrtc通信中,rtcpeerconne...
面向自研WebRTC服务的两级SDP重构方法、装置与流程

本技术涉及计算机,具体而言,涉及面向自研webrtc服务的两级sdp重构方法、装置。

背景技术:

1、在基于浏览器的标准webrtc通信中,rtcpeerconnection(webrtc对等连接对象)通过ice框架自动收集本机全部网络接口的候选地址(包括主机候选、服务器反射候选srflx等),并以sdp格式封装后经信令通道发送至对端。然而,当浏览器作为offer端与自研webrtc服务(基于libnice与srtp库实现、非google标准栈)建立p2p连接时,存在多重结构性不兼容:

2、其一,浏览器默认收集的候选地址包含大量私有地址段(10.x.x.x、192.168.x.x、172.16–31.x.x)、保留地址(127.x.x.x环回地址、169.254.x.x链路本地地址)及超长ipv6地址(>15字符),而自研服务因libnice解析逻辑差异,易错误选择内网地址尝试连接,导致超时失败;

3、其二,sdp中分散嵌入的候选行及trickleice选项标记(a=ice-options:trickle),与自研服务期望的一次性接收完整候选列表+非trickle模式严重冲突,引发时序错配与解析异常;

4、其三,标准webrtc等待全部ice候选收集完毕才触发协商,在弱网环境下因stun/turn响应超时而显著延迟连接建立;

5、其四,多业务共用同一rtcpeerconnection实例时,候选事件与sdp状态变量全局共享,造成视频播放与对讲通话的信令状态相互污染;

6、其五,sdp协商完成后浏览器即进入数据传输状态,但自研服务底层资源(如srtp上下文、端口绑定)尚未就绪,导致首帧丢失。

7、上述问题本质源于标准浏览器ice行为与非标服务端解析逻辑之间的语义缺陷,即现有技术既未在候选生成源头实施地址分类过滤,亦未针对业务类型设计sdp结构的差异化重构机制,更缺乏协商后服务端通道就绪的主动确认闭环。因此,亟需一种能动态识别公网候选、按业务策略执行两级sdp重构、并同步保障状态同步的方法,以弥合该缺陷。

技术实现思路

1、有鉴于此,本技术的目的在于提供面向自研webrtc服务的两级sdp重构方法、装置,有效地解决了现有技术缺乏面向非标服务的候选地址分类过滤与业务感知的sdp两级重构机制的问题。

2、第一方面,本技术实施例提供了一种面向自研webrtc服务的两级sdp重构方法,所述方法包括:

3、监听浏览器端的浏览器ice框架产生的候选地址事件,依据预设的六类内网地址识别规则识别从每个候选地址中提取出的ip地址,以识别出公网候选地址;

4、格式化所述公网候选地址为候选行,追加所述候选行至候选sdp缓冲区,并更新所述候选sdp缓冲区的状态,以维护公网候选有效计数器;

5、当公网候选有效计数器触发重构条件时,依据当前业务连接类型,基于本地sdp对候选sdp缓冲区中的候选行执行两级差异化重构得到目标sdp,并封装所述目标sdp得到结构化数据,使得所述自研webrtc服务执行ice协商以产生应答sdp;

6、设置所述应答sdp为远程描述,并在设置成功后向所述自研webrtc服务发送状态确认请求,并根据返回的状态码判断通道就绪状态,并在确认就绪后开始数据传输。

7、结合第一方面,本技术实施例提供了第一方面的第一种可能的实施方式,其中,所述依据当前业务连接类型,基于本地sdp对候选sdp缓冲区中的候选行执行两级差异化重构得到目标sdp,包括:

8、按照预先设置的方式识别出当前业务连接的类型;不同的类型对应不同的重构方式;

9、基于所述重构方式,基于本地sdp对候选sdp缓冲区中的候选行执行两级差异化重构得到目标sdp。

10、结合第一方面,本技术实施例提供了第一方面的第二种可能的实施方式,其中,所述类型至少包括对讲连接类型;

11、基于所述重构方式,基于本地sdp对候选sdp缓冲区中的候选行执行两级差异化重构得到目标sdp,包括:

12、将本地sdp按行进行拆分,移除所有以目标开头的原有候选行得到剩余行;剩余行的相对顺序与语法完整性被保留;

13、将剩余行重新组合为完整sdp字符串,并在所述完整sdp字符串的末尾集中追加候选sdp缓冲区中的全部候选行。

14、结合第一方面,本技术实施例提供了第一方面的第三种可能的实施方式,其中,所述类型至少包括视频播放连接类型;

15、基于所述重构方式,基于本地sdp对候选sdp缓冲区中的候选行执行两级差异化重构得到目标sdp,包括:

16、在本地sdp中搜索出目标标记,并从所述本地sdp中移除所述目标标记以及目标标记的所在行;

17、在移除完成后,再于本地sdp的末尾集中追加候选sdp缓冲区中的全部候选行以使整个本地sdp符合目标模式的接收要求。

18、结合第一方面,本技术实施例提供了第一方面的第四种可能的实施方式,其中,追加所述候选行至候选sdp缓冲区,包括:

19、判断所述公网候选地址是否为第一条到达的公网候选地址、本地sdp已经存在;

20、若是,将该候选地址格式化为带有目标前缀、后接原始候选字符串、回车换行符结尾的候选行,并追加至候选sdp缓冲区;

21、定位本地sdp中媒体描述行中的两个目标起始位置,取二者中靠后位置的索引值,将候选sdp缓冲区中的该条候选行插入至该索引值所指位置之前。

22、结合第一方面,本技术实施例提供了第一方面的第五种可能的实施方式,其中,根据返回的状态码判断通道就绪状态,并在确认就绪后开始数据传输,包括:

23、若长连接开关处于开启状态,根据当前业务连接的类型向自研webrtc服务中的指定url发送状态确认请求;

24、获取指定url根据所述状态确认请求返回的状态码,确认通道处于通道就绪并进行数据传输。

25、结合第一方面,本技术实施例提供了第一方面的第六种可能的实施方式,其中,依据预设的六类内网地址识别规则识别从每个候选地址中提取出的ip地址,以识别出公网候选地址,包括:

26、依次正则匹配所述ip地址与预设的私有地址段、保留地址段和异常长度地址,得到匹配结果;

27、根据所述匹配结果,判定所述ip地址为内网地址并丢弃,或者判定为公网候选地址并予以保留。

28、第二方面,本技术实施例提供了一种面向自研webrtc服务的两级sdp重构装置,所述装置包括:

29、监听模块,用于监听浏览器端的浏览器ice框架产生的候选地址事件,依据预设的六类内网地址识别规则识别从每个候选地址中提取出的ip地址,以识别出公网候选地址;

30、追加模块,用于格式化所述公网候选地址为候选行,追加所述候选行至候选sdp缓冲区,并更新所述候选sdp缓冲区的状态,以维护公网候选有效计数器;

31、封装模块,用于当公网候选有效计数器触发重构条件时,依据当前业务连接类型,基于本地sdp对候选sdp缓冲区中的候选行执行两级差异化重构得到目标sdp,并封装所述目标sdp得到结构化数据,使得所述自研webrtc服务执行ice协商以产生应答sdp;

32、传输模块,用于设置所述应答sdp为远程描述,并在设置成功后向所述自研webrtc服务发送状态确认请求,并根据返回的状态码判断通道就绪状态,并在确认就绪后开始数据传输。

33、第三方面,本技术实施例提供了一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行任一项所述的一种面向自研webrtc服务的两级sdp重构方法的步骤。

34、第四方面,本技术实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行任一项所述的一种面向自研webrtc服务的两级sdp重构方法的步骤。

35、本技术实施例提供的一种面向自研webrtc服务的两级sdp重构方法,所述方法通过监听ice候选事件并依据六类内网地址规则实时识别公网候选,从源头剔除私有地址及超长ipv6地址,彻底消除自研服务因误选内网地址导致的连接超时,提升p2p建立成功率;将公网候选格式化后统一追加至候选sdp缓冲区,并以计数器驱动重构触发,使sdp协商不再依赖全部候选收齐,显著缩短弱网环境下的连接建立时间;依据业务类型执行两级差异化sdp重构,确保sdp结构严格匹配自研服务的非trickle解析预期,避免格式解析失败;在设置应答sdp为远程描述后主动发送状态确认请求,依据自研webrtc服务返回的状态码判断通道真实就绪状态,有效防止首帧丢失;整套方法依托浏览器端轻量级处理,无需修改服务端代码,即可实现与非标webrtc服务的高可靠、低延迟、安全合规对接。