Я подписан на это руководство, чтобы сделать простой пример WebRTC. Но удаленное видео не отображается ни в одном браузере, и Chrome не показывает ошибку:
Uncaught (в обещании) DOMException: ошибка обработки кандидата ICE
Я сделал лог не методом setRemoteDescription:
peerConn.setRemoteDescription(new RTCSessionDescription(signal.sdp), function(){
alert('success')
}, function(e){ console.log(e); alert(e)});
И тогда я получаю следующую ошибку:
OperationError: не удалось установить удаленное предложение sdp: вызвано в неправильном состоянии: STATE_SENTOFFER
В рассматриваемом туториале автор утверждает, что он умеет все делать правильно и что ошибка должна быть на моей стороне. Кто-нибудь когда-нибудь испытывал это?
(извините за мой английский)
ИЗМЕНИТЬ: (включить код)
Я все еще непрофессионал в этом вопросе, ссылка на учебник, указанная в начале, была самой чистой, которую я нашел, чтобы начать получать удовольствие. Я поставлю исходник, я думаю, что это важно:
Внутренняя часть — server.js
/** successful connection */
wss.on('connection', function (client) {
console.log("A new WebSocket client was connected.");
/** incomming message */
client.on('message', function (message) {
/** broadcast message to all clients */
wss.broadcast(message, client);
});
});
// broadcasting the message to all WebSocket clients.
wss.broadcast = function (data, exclude) {
var i = 0, n = this.clients ? this.clients.length : 0, client = null;
if (n < 1) return;
console.log("Broadcasting message to all " + n + " WebSocket clients.");
for (; i < n; i++) {
client = this.clients[i];
// don't send the message to the sender...
if (client === exclude) continue;
if (client.readyState === client.OPEN) client.send(data);
else console.error('Error: the client state is ' + client.readyState);
}
};
Внешний интерфейс — webrtc.js
wsc.onmessage = function (evt) {
var signal = null;
if (!peerConn) answerCall();
signal = JSON.parse(evt.data);
if (signal.sdp) {
console.log("Received SDP from remote peer.");
peerConn.setRemoteDescription(new RTCSessionDescription(signal.sdp),
function(){},
function(e){ console.log(e);
});
}
else if (signal.candidate) {
console.log("Received ICECandidate from remote peer.");
peerConn.addIceCandidate(new RTCIceCandidate(signal.candidate));
} else if ( signal.closeConnection){
console.log("Received 'close call' signal from remote peer.");
endCall();
}
};
Весь шрифт: Код взят из этого репозитория github.
answerCall()
? Обратите внимание, что вы должныsetRemoteDescription(offer)
до вызоваcreateAnswer()
. Предложение является основой для ответа. - person jib   schedule 12.01.2017