Я использую сервер узлов (v10.12.0) в Ubuntu (16.04.5), работающий на порту 443. Я создал приложение Twiml в Twilio для маршрутизации входящих вызовов на мой клиент 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 отображает эту ошибку:
Uncaught TypeError: Невозможно прочитать свойство 'sdp' из null
в g.getSDP (twilio.min.js: 103)
at twilio.min.js: 95
Я уже изучил этот документ от twilio и убедился, что с брандмауэром проблем нет.
Поэтому я добавил код для перезагрузки страницы после отключения вызова.
Twilio.Device.disconnect(function(connection) {
// Reloading page to avoid ICE error.
location.reload();
});
Интересно, кто-нибудь знает какое-либо решение, кроме перезагрузки страницы?