2

我正在尝试使用 webRTC 数据通道在两个本地对等方(在两个 chrome 选项卡中)之间交换数据,但它始终处于“正在连接”状态。但是,一切顺利的是firefox。

我在这里发现了一个类似的问题 - webRTC 数据通道在 chrome62 中不起作用,但仍然没有有效的解决方案

这是我的代码片段:

let DataChannel
const iceServers = {
"iceServer" : [
    {"urls" : "stun:stun.services.mozilla.com"},
    {"urls" : "stun:stun.l.google.com:19302"}
]}

socket.on('ready', () => {
if(isCaller) {
    console.log('caller is ready to create offer')
    rtcPeerConnection = new RTCPeerConnection(iceServers)
    DataChannel = rtcPeerConnection.createDataChannel(RoomNumber, {negotiated: true, id:0})
    DataChannel.onmessage = event =>{
        CallName.innerText = event.data
    }
}})

socket.on('offer', (event) => {
if(!isCaller) {
    console.log( 'ready to create answer')
    rtcPeerConnection = new RTCPeerConnection(iceServers)
    DataChannel = rtcPeerConnection.createDataChannel(RoomNumber, {negotiated: true, id:0})
    DataChannel.onmessage = event =>{
        CallName.innerText = event.data
    }
}})

SetCallName.onclick = () => {
if (InputCallName.value ===""){
    alert("please enter a call name")
}
else{
    console.log(InputCallName.value)
    DataChannel.send(InputCallName.value)
    CallName.innerText = InputCallName.value
    // DivCallName.innerHTML = InputCallName.value

}}

单击按钮时,出现此错误:

未捕获的 DOMException:无法在“RTCDataChannel”上执行“发送”:RTCDataChannel.readyState 在 HTMLButtonElement 处未“打开”

再次,在 Firefox 中一切都很好。我目前正在使用 chrome,因为它的chrome://webrtc-internals/功能

4

0 回答 0