我正在运行443端口的ubuntu(16.04.5)中运行节点服务器(v10.12.0)。我在Twilio中创建了一个Twiml应用程序,用于将来电路由到我的webrtc客户端。我的JS档案:
$(document).ready(function() {
$.post("/token/generate", function(data) {
Twilio.Device.setup(data.token);
});
});
/* Callback for when Twilio Client initiates a new connection */
Twilio.Device.connect(function (connection) {
//In call...
});
/* Callback for when Twilio Client receives a new incoming call */
Twilio.Device.incoming(function(connection) {
connection.accept(function() {
//In call...
});
answerButton.click(function() {
connection.accept();
});
});
/* End a call */
function hangUp() {
Twilio.Device.disconnectAll();
}
当我第一次加载页面时,我可以毫无错误地接收来电。但是当我再次调用而没有重新加载页面时出现错误:
错误:ICE与Twilio谈判失败。通话将终止。
当我接听第二个电话时,chrome控制台会显示以下错误:
未捕获的TypeError:无法读取g.getSDP(twilio.min.js:103)处的属性'sdp'为null twilio.min.js:95
我已经通过twilio调查了这个doc,我确认防火墙没有问题。
所以我在断开呼叫后添加了重新加载页面的代码。
Twilio.Device.disconnect(function(connection) {
// Reloading page to avoid ICE error.
location.reload();
});
我想知道除了重新加载页面之外是否有人知道任何解决方案?
我使用的是twilio client api 1.3版。我将其更改为1.4(media.twiliocdn.com/sdk/js/client/v1.4/twilio.min.js)。现在它似乎正在起作用。