RTCPeerConnection:datachannel 事件
当 RTCDataChannel
被添加到连接中时,会向 RTCPeerConnection
实例发送一个 datachannel
事件,这是由于远程对等方调用了 RTCPeerConnection.createDataChannel()
。
注意: 当连接的本地端创建通道时,不会 派发此事件。
此事件不可取消,也不冒泡。
语法
在诸如 addEventListener()
之类的函数中使用事件名,或者设置事件处理程序属性。
js
addEventListener("datachannel", (event) => {});
ondatachannel = (event) => {};
事件类型
一个 RTCDataChannelEvent
。继承自 Event
。
事件属性
也继承了 Event
的属性。
channel
只读-
返回与事件关联的
RTCDataChannel
。
示例
此示例设置了一个处理 datachannel
事件的函数,该函数通过收集与新添加的 RTCDataChannel
通信所需的信息,并通过为该通道上发生的事件添加事件处理程序来处理这些事件。
js
pc.addEventListener(
"datachannel",
(ev) => {
receiveChannel = ev.channel;
receiveChannel.onmessage = myHandleMessage;
receiveChannel.onopen = myHandleOpen;
receiveChannel.onclose = myHandleClose;
},
false,
);
receiveChannel
被设置为事件的 channel
属性的值,该属性指定了表示连接远程对等方与本地对等方的 datachannel 的 RTCDataChannel
对象。
此相同的代码还可以使用 RTCPeerConnection
接口的 ondatachannel
事件处理程序属性,如下所示
js
pc.ondatachannel = (ev) => {
receiveChannel = ev.channel;
receiveChannel.onmessage = myHandleMessage;
receiveChannel.onopen = myHandleOpen;
receiveChannel.onclose = myHandleClose;
};
规范
规范 |
---|
WebRTC:浏览器中的实时通信 # dom-rtcpeerconnection-ondatachannel |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。