Я пытаюсь сделать видео-приложение webrtc. В коде клиента, у меня есть это:WebRTC, socket.io, node.js: Не удается прочитать свойство «emit» неопределенного?
getUserMedia(constraints, handlemedia, errorhandle);
constraints = {video: true};
function handlemedia(stream){
//other stuff I do here
document.getElementById("connect").addEventListener("click", function(e){
var socket = io.connect();
}
var servers = {"iceServers": [{ "url": "stun:localhost:2013"}]};
pc = new RTCPeerConnection(servers);
pc.onicecandidate = function (evt, socket) {
console.log("THIS IS THE evt.candidate: ", evt.candidate);
somecandidate = evt.candidate;
socket.emit("candidate", somecandidate);
};
pc.addStream(localStream);
function gotDescription(desc, socket) {
console.log("WE GOT THE DESC.");
pc.setLocalDescription(desc);
socket.emit("sdp", desc);
}
document.getElementById("createoffer").addEventListener("click", function(e){
pc.createOffer(gotDescription);
});
}
А потом в server.js (в node.js) код у меня есть:
var io = require('socket.io').listen(app);
io.sockets.on('connection', function(socket){
socket.on("candidate", function(somecandidate){
console.log("GOT CANDIDATE.");
});
socket.on("sdp", function(desc){
console.log("Got desc");
});
});
Я понимаю, что я только с помощью кнопок прямо сейчас , но на данный момент я просто могу проверить это. Мне просто нужно снять всю эту вещь.
Поэтому, если я запустил этот код, он говорит в консоли браузера «Невозможно прочитать свойство« испускать »неопределенного. Так что, очевидно, ему не нравится файл socket.emit. Почему бы и нет? Что ему не нравится в сокете .emit?
Вы пытались иметь сокет var вне функции, чтобы вы могли назначить его в этой функции и использовать его позже на pc.onicecandidate? На этом этапе он не определен. – Dslayer