带有RTCConfiguration的RTCPeerConnection在Firefox上中断

时间:2018-11-26 19:50:03

标签: javascript typescript firefox websocket webrtc

使用RTCConfiguration创建新的RTCPeerConnection(如以下代码)在Chrome 70和Safari 12中可以正常工作,但在Firefox 63中会中断

const configuration: RTCConfiguration = {
  iceServers: [
    {
        urls: 'turn:user@myserver.com:3478',
        username: 'user',
        credential: 'mypwd'
    }
  ]
};

let rtcPeerConn: RTCPeerConnection = new RTCPeerConnection(configuration);

我曾尝试prefix RTCPeerConnection,但都无法正常工作,同样的错误

// as above configuration
const PeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection || window.msRTCPeerConnection;

let RTCPeerConn = new PeerConnection(configuration);

然后我尝试添加WebRTC adapter.js,但遇到了相同的错误

最后我注意到,如果我不将配置传递给构造函数而又删除了configuration,我不会遇到错误,但是是我后来尝试设置使用setConfiguration方法进行配置时,我遇到未知的函数异常

有什么主意吗?

1 个答案:

答案 0 :(得分:1)

我的问题是重复的,我的问题的答案由@ stefan-peshikj在https://stackoverflow.com/a/47127489/5404186中给出

事实证明,Chrome和Safari比Firefox宽容,后者不接受带有“ username @”的转弯网址

不接受:

const configuration: RTCConfiguration = {
iceServers: [
  {
    urls: 'turn:user@myserver.com:3478', // <- here remove "user@"
    username: 'user',
    credential: 'mypwd'
  }
 ]
};

接受:

const configuration: RTCConfiguration = {
  iceServers: [
  {
    urls: 'turn:myserver.com:3478',
    username: 'user',
    credential: 'mypwd'
  }
  ]
};

这解决了我的问题。 Thx @ stefan-peshikj,并非所有英雄都披着斗篷。如果您想在这里改写答案以获得应有的业力积分,请不要犹豫