Я использую socket.io и обслуживаю на node.js.Webrtc и socket.io: createanswer() всегда имеет ошибку. Зачем?. Мой код соединяет двух сверстников, но только один из них знает об этом?
Вот код на стороне клиента:
getUserMedia(constraints, handlemedia, error);
function handlemedia(stream) {
localStream = stream;
attachMediaStream(localVideo, stream);
socket = io.connect();
document.getElementById("connect").addEventListener("click", function(e){
remoteVideo = document.getElementById("remoteVideo");
console.log("We know what socket is.", socket);
servers = {"iceServers": [{ "url": "stun:stun.l.google.com:19302"}]};
pc = new RTCPeerConnection(servers);
pc.onicecandidate = console.log("GOT CANDIDATE");
pc.addStream(localStream);
pc.onaddstream = function(event)
{
attachMediaStream(remoteVideo, event.stream);
}
function error()
{
console.log("An error occurred in the create offer section. ");
}
sdpconstraints = {'mandatory': {
'OfferToReceiveVideo':true }};
pc.createOffer(function(sessiondesc)
{
console.log("Socket attemp 2: ", socket);
pc.setLocalDescription(sessiondesc);
console.log("Offer: ", sessiondesc);
console.log("local description was set. Don't worry.");
socket.emit("sessiondesc", sessiondesc);
}, error, sdpconstraints);
socket.on("sessiondesc", function(sessiondesc)
{
console.log("WE GOT THE FUNCTION ");
sdpconstraints = {'mandatory': {
'OfferToReceiveVideo':true }};
console.log("Your partner created an offer for you.");
pc.createAnswer(function(sessiondesc)
{
console.log("Socket attemp at create answer section: ", socket);
pc.setLocalDescription(sessiondesc);
console.log("Session description: ", sessiondesc);
console.log("Local desc for create answer section was set.");
socket.emit("sessiondesc", sessiondesc);
}, console.log("Error in create answer section occurred."), sdpconstraints);
});
}
}
А вот код сервера, используя Node.js и Socket.io:
var io = require('socket.io').listen(app);
io.sockets.on('connection', function(socket, webkitRTCPeerConnection, client, id){
socket.on("sessiondesc", function(sessiondesc)
{
console.log("Emitting session desc RIGHT NOW");
socket.broadcast.emit("sessiondesc", sessiondesc);
});
});
Так что же происходит я открываю два вкладки в моем браузере, перейдите в localhost на обеих вкладках и убедитесь, что у меня консоль открыта для просмотра журналов.
Затем я нажимаю кнопку connect на первой вкладке. Он отображает журналы до «локального набора описаний, не беспокоиться», но на нем не отображается «МЫ НАЙТИ ФУНКЦИЮ», что имеет смысл, потому что я еще не подключился на другой вкладке.
Итак, перейдите на другую вкладку и нажмите «Подключиться». Теперь, на этой второй вкладке он отображает информацию только в локальном наборе описания, не волнуйтесь. Таким образом, очевидно, что вторая вкладка ничего не получает с первой вкладки! Зачем?
НО, когда я вернусь к первой вкладке, он получил что-то! Он прошел через часть «Мы получили функцию» моего кода. Затем он говорит: «Ваш партнер создал для вас предложение» Но проблема в следующем: «Ошибка в создании секции ответа», поэтому в createanswer произошла ошибка! Почему это? Почему это вызвало эту ошибку?
Он также не отображает удаленные видео на любой вкладке.