Webrtc:无法处理WebRTC答案

Med*_*ida 9 xmpp node.js webrtc jingle stanza.io

我使用ejabberd + stanza io构建实时消息和音频呼叫网站.我设法进行了第一次音频通话

from chrome(on PC) -> chrome(on mac) with no errors
Run Code Online (Sandbox Code Playgroud)

当我尝试拨打电话时会出现问题

from chrome(on mac) to firefox(on pc) or vice versa
Run Code Online (Sandbox Code Playgroud)

Chrome浏览器日志正在显示 Could not process WebRTC answer

通过使用chrome://webrtc-internals调试工具我发现setremotedescription失败的错误:

`Failed to set remote answer sdp: Called with SDP without ice-ufrag and ice-pwd`
Run Code Online (Sandbox Code Playgroud)

这是我用来开始通话的内容:

var session = client.jingle.createMediaSession('full JID');
  session.addStream(localAudio_stream); // getUserMedia stream
  session.start();
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?firefox如何成功建立一个调用但是chrome cant(在opera上测试结果相同(失败))

完整的JS代码

Med*_*ida 4

我通过将 npm 包 sdpparser 包含在 client.js (stanza.io)中然后再次构建它来解决这个问题,并在 stanza.io.bundle 中进行了如下调整PeerConnection.prototype.handleAnswer

var sdp = client.SdpParser.parse(answer.sdp);
sdp.media.forEach(function(media){
  if(media.type === 'video' && media.inactive ) {
    delete media.fingerprint;
    media.port = 0;
  }
});
answer.sdp = client.SdpParser.format(sdp);
Run Code Online (Sandbox Code Playgroud)

这可能不是最好的方法,但它绝对可以解决问题。

调整后的 stanza.io 的 github 链接

jingle.js 存储库上有用的 github 问题