【问题标题】:XirSys $.ajax() method returned status 400, error: Could not validate applicationXirSys $.ajax() 方法返回状态 400,错误:无法验证应用程序
【发布时间】:2015-06-23 17:55:01
【问题描述】:

我正在按照 Sam Dutton 教程开发自己的 webRTC 应用程序,我正在使用 xirSys 为我的点对点视频提供 TURN 服务器。但是$.ajax() 方法没有像我预期的那样返回凭据、用户名、url。我也尝试使用dataType: JSONP。 firebug 调试时返回的响应是:

{"p":"/getIceServers","s":400,"d":null,"e":"无法验证应用程序"}

我是否可以将我的 urlusernamecredential 作为 JSON 并直接使用它们在我的应用程序中没有出现任何错误,因为即使 url 命中的状态是 200,有时在调用 $.ajax() 时仍然会出现语法错误?

    $.ajax({
        type: "POST",
        url: "https://api.xirsys.com/getIceServers",
        data: {
            ident: "< xyz >",
            secret: "< something-like-my-token >",
            domain: "< www.mydomain.com >",
            application: "default",
            room: "default",
            secure: 1
        },
        success: function (data, status) {
            // data.d is where the iceServers object lives
            peerConnectionConfig = data.d;
            console.log(peerConnectionConfig);
        }
});

【问题讨论】:

    标签: jquery ajax json turn


    【解决方案1】:

    经过一番挣扎,我终于发现使用 jQuery 的 $.ajax() 不如 $.post() 好用,或者干脆我没明白。 无论如何,这是我的解决方法。

    function() 是一个成功回调,其中 STUNTURN 服务器被放入一个数组中,并按照用户的需要使用RTCPeerConnection(server) 方法。

    $.post("https://api.xirsys.com/getIceServers", {
                ident: "your_username",
                secret: "XXX-XXXX-XXXX-XX",
                domain: "www.mydomainname.com",
                application: "default",
                room: "default",
                secure: 1
            },
            function (data, status) {
                console.log("Data: " + data + "nnStatus: " + status); //just for checking
                myResponse = data;
                turnServer = JSON.parse(myResponse);     //parsing to JSON because RTCPeerConnection() requires an object
                console.log(turnServer.d);    //d is the property that contains our STUN and TURN servers
                for (var i in turnServer.d.iceServers) {    //logic for STUN and TURN
                    if(i == 0 ) {
                        STUN = turnServer.d.iceServers[i];
                        pc_config.iceServers.push(STUN);
                    }
                    if( i > 0 ) {
                        var turnUrl = turnServer.d.iceServers[i].url;
                        var turnSlice = turnUrl.slice(5,25);
                        TURN = {"url": "turn:" + turnServer.d.iceServers[i].username + '@' + turnSlice,
                            "credential" : turnServer.d.iceServers[i].credential }
                        pc_config.iceServers.push(TURN);
    
          }
    

    调用 RTCPeerConnection(pc_config) 来获取 STUN 和 TURN 服务器,否则它可以在 localhost 上正常工作,参数设置为 null

    【讨论】:

      猜你喜欢
      • 2018-12-26
      • 1970-01-01
      • 1970-01-01
      • 2016-09-07
      • 1970-01-01
      • 2021-07-28
      • 2020-10-15
      • 2021-11-19
      • 2012-09-16
      相关资源
      最近更新 更多