我正在按照Sam Dutton教程开发我自己的webRTC应用程序,我正在使用xirSys为我的点对点视频提供TURN服务器。但是$.ajax()
方法并没有像我预期的那样返回凭证,用户名和网址。我也尝试使用dataType: JSONP
。
从firebug调试时返回的响应是:
{" P":" / getIceServers"" S" 400" d":空," E& #34;:"无法验证应用程序"}
无论如何我可以将网址,用户名,凭据设为 JSON 并直接使用它们在我的应用程序中没有收到任何错误,因为即使网址命中的状态为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);
}
});
答案 0 :(得分:0)
经过多次努力,我终于发现使用 jQuery&#39; $ .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
。