WebRTC DTLS 传输层

作者:追风剑情 发布于:2024-2-4 11:22 分类:Unity3d

为了提升应用程序的安全性,WebRTC中RTP和RTCP数据都采用DTLS协议进行传输,RTCDtlsTransport接口提供了对DTLS层的访问。RTCDtlsTransport的定义如下面的代码清单所示。

//RTCDtlsTransport的定义
interface RTCDtlsTransport : EventTarget {
	[SameObject]readonly attribute RTCIceTransport iceTransport;
	readonly attribute RTCDtlsTransportState state;
	sequence<ArrayBuffer> getRemoteCertificates();
	attribute EventHandler onstatechange;
	attribute EventHandler onerror;
};

RTCDtlsTransport 属性

1.iceTransport 只读

该属性表示收发数据包的底层传输通道,类型为RTCIceTransport。

2.state 只读

该属性返回DTLS传输状态,类型为 RTCDtlsTransportState,定义如下。

//RTCDtlsTransportState的定义
enum RTCDtlsTransportState {
	"new",
	"connecting",
	"connected",
	"closed",
	"failed"
};

RTCDtlsTransportState 枚举值说明
枚举值 说明
new DTLS还没有开始协商
connecting DTLS正在验证对等端的指纹,并建立安全连接
connected DTLS 安全连接已经建立
closed DTLS 传输已关闭
failed DTLS 传输因为某种原因失败了

RTCDtlsTransport 方法

getRemoteCertificates()方法

该方法返回包含对等端证书的数组。

const remoteCert =transport.getRemoteCertificates()

输入:无。
返回值:包含对等端证书的数组,数组成员类型为 ArrayBuffer。

RTCDtlsTransport 事件

1. statechange 事件

当 state 状态值发生改变时触发该事件,新的状态值可以通过 RTCDtlsTransport.state 获取,对应事件句柄 onstatechange,如下面的代码清单所示。

transport.onstatechange = (event) => {
	console.log(transport.state);
};

也可以使用 addEventListener()方法监听事件 statechange,如下面的代码清单所示。

transport.addEventListener("statechange", ev => {
	console.log(transport.state);
};

2.error 事件

当 DTLS 传输出错时触发该事件,事件类型为 RTCErrorEvent,对应事件柄 onerror,如下面的代码清单所示。

//onerror事件句柄示例
transport.onerror = (event) => {
	console.log(event.name);
};

RTCErrorEvent 包含了类型为 RTCError 的属性 error。

标签: Unity3d

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号