webRtc javascript中的DataChannel

时间:2017-09-14 20:49:13

标签: javascript webrtc rtcdatachannel

我正在使用javascript在WebRtc中整合视频和聊天时遇到问题。我正在使用这个例子

https://github.com/oney/react-native-webrtc-server/blob/master/index.html

视频工作正常但发送邮件失败既没有收到错误!!!! 作为数据通道在上面的示例中共享为以下函数:

Line #115 to 142 of above link
if (pc.textDataChannel) {
  return;
}
var dataChannel = pc.createDataChannel("text");

dataChannel.onerror = function (error) {
};

dataChannel.onmessage = function (event) {
  console.log('open state2')

  var content = document.getElementById('textRoomContent');
  content.innerHTML = content.innerHTML + '<p>' + socketId + ': ' + event.data + '</p>';
};

dataChannel.send = function (event) {
  console.log('open state2')
  exchange(event)
};

dataChannel.onopen = function () {
  console.log('open state')
  var textRoom = document.getElementById('textRoom');
  textRoom.style.display = "block";
};

dataChannel.onclose = function () {
};
pc.textDataChannel = dataChannel;

发送消息时使用:

pc.textDataChannel.send(text);//Line #218 of above link

我究竟应该实现它的工作原理我觉得这个发送并不是消息失败和视频破坏的原因

1 个答案:

答案 0 :(得分:0)

您应该在createOffer之前调用createDataChannel。

更简单的方法是在创建RTCPeerConnection

后立即创建dataChannel
var pc = new RTCPeerConnection(configuration);
var dataChannel = pc.createDataChannel("text");
...

然后createOffer将包含数据通道描述,在SDP中您应该看到类似的内容:

m=application 9 DTLS/SCTP 5000
...
a=sctpmap:5000 webrtc-datachannel 1024