Метод XirSys $.ajax() вернул статус 400, ошибка: не удалось проверить приложение

Я разрабатываю свое собственное приложение webRTC, следуя руководствам Сэма Даттона, я использую xirSys для предоставления сервера TURN для моего однорангового видео. НО метод $.ajax() не возвращает учетные данные, имя пользователя, URL-адрес, как я ожидаю. Я также пытался использовать dataType: JSONP. Возвращаемый ответ при отладке из firebug:

{"p":"/getIceServers","s":400,"d":null,"e":"Не удалось проверить приложение"}

Могу ли я получить url, имя пользователя, учетные данные в виде 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);
        }
});

person aitchkhan    schedule 16.05.2015    source источник


Ответы (1)


После долгих мучений я, наконец, обнаружил, что использование jQuery $.ajax() работает не так круто, как $.post(), или просто не работало. возьми. В любом случае, вот моя работа с этим.

function() – это успешный обратный вызов, в котором серверы STUN и TURN помещаются в массив и используются по желанию метода 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.

person Community    schedule 19.06.2015