RTCPeerConnection:datachannel 事件

RTCDataChannel 被添加到连接中时,会向 RTCPeerConnection 实例发送一个 datachannel 事件,这是由于远程对等方调用了 RTCPeerConnection.createDataChannel()

注意: 当连接的本地端创建通道时,不会 派发此事件。

此事件不可取消,也不冒泡。

语法

在诸如 addEventListener() 之类的函数中使用事件名,或者设置事件处理程序属性。

js
addEventListener("datachannel", (event) => {});

ondatachannel = (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 的浏览器中加载。

另请参阅