sipjs 0.11.0的转弯或结冰的位置应该在哪里?

时间:2018-11-18 23:16:42

标签: webrtc sip freeswitch sipjs

我正在从sipjs 0.7x迁移到sipjs 0.11 阅读完Git问题https://github.com/onsip/SIP.js/pull/426#issuecomment-312065734之后 和 https://sipjs.com/api/0.8.0/sessionDescriptionHandler/

我发现冰选项(转弯,转弯,眩晕)不再在用户代理中, 但问题是我不太了解应该在哪里使用 setDescription(sessionDescription,选项,修饰符)

我已经看到,使用 options.peerConnectionOptions.rtcConfiguration.iceServers

下面是我尝试过的

session.on('trackAdded', function () {
            // We need to check the peer connection to determine which track was added
            var modifierArray = [
                SIP.WebRTC.Modifiers.stripTcpCandidates,
                SIP.WebRTC.Modifiers.stripG722,
                SIP.WebRTC.Modifiers.stripTelephoneEvent
                ];
            var options = {
            peerConnectionOptions:{
                rtcConfiguration:{
                    iceServers : {
                                [{urls: 'turn:35.227.67.199:3478',
                                username: 'leon',
                                credential: 'leon_pass'}]
                    }
                }
            }
        }
            session.setDescription('trackAdded', options,modifierArray);

            var pc = session.sessionDescriptionHandler.peerConnection;

            // Gets remote tracks
            var remoteStream = new MediaStream();
            pc.getReceivers().forEach(function (receiver) {
                remoteStream.addTrack(receiver.track);
            });
            remoteAudio.srcObject = remoteStream;
            remoteAudio.play();

            // Gets local tracks
            // var localStream = new MediaStream();
            // pc.getSenders().forEach(function(sender) {
            //     localStream.addTrack(sender.track);
            // });
            // localVideo.srcObject = localStream;
            // localVideo.play();
        });
    }

我已经尝试过了,看来流量并没有流向Coturn服务器。 我已经使用Trickle Ice“ https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/”进行了测试,这很好,但是我发现没有流量通过coturn服务器。您也可以使用这个,我不介意。

甚至在官方网站上也没有演示来展示我们如何使用setDescription(sessionDescription,选项,修饰符)。在这种情况下,请问一些建议吗?

2 个答案:

答案 0 :(得分:1)

在传递给新 UserAgent 的参数中配置 STUN/TURN 服务器。 这是示例,它似乎适用于 v0.17.1:

const userAgentOptions = {
  ...
  sessionDescriptionHandlerFactoryOptions: {
    peerConnectionConfiguration: {
      iceServers: [{
        urls: "stun:stun.l.google.com:19302"
      }, {
        urls: "turn:TURN_SERVER_HOST:PORT",
        username: "USERNAME",
        credential: "PASSWORD"
      }]
    },
  },
  ...
};
const userAgent = new SIP.UserAgent(userAgentOptions);

使用 SimpleUser 时 - 在 SimpleUserOptions 中传递它:

const simpleUser = new Web.SimpleUser(url, { userAgentOptions })

答案 1 :(得分:0)

我找到了解决方案,它既不应位于session.invite中,也不应位于session.on.trackAdded中。