Я создаю потоковое видео с помощью Socket.io (Nodejs) и WebRTC. Я думаю, что я делаю все правильно, но даже локальный поток не появляется (ни удаленный). я использую этот код для реализации того, что я хочу
const pc = new RTCPeerConnection(configuration)
call.onclick = async () => {
localVideo.srcObject = await navigator.mediaDevices.getUserMedia({
video: true,
audio: true
});
for (const track of localVideo.srcObject.getTracks()) {
pc.addTrack(track, localVideo.srcObject);
}
};
pc.ontrack = e => remoteVideo.srcObject = e.streams[0];
pc.oniceconnectionstatechange = e => console.log(pc.iceConnectionState);
pc.onicecandidate = (e) => {
socket.emit('candidate', {
candidate: e.candidate
})
}
pc.onnegotiationneeded = async e => {
await pc.setLocalDescription(await pc.createOffer());
socket.emit('sdp', {
sdp: pc.localDescription
});
}
socket.on('data', (data) => {
if (data.sdp) {
pc.setRemoteDescription(new RTCSessionDescription(data.sdp));
if (data.sdp.type == "offer") {
pc.setLocalDescription(pc.createAnswer());
socket.emit('sdp', {
sdp: pc.localDescription
})
}
} else if (data.candidate) {
pc.addIceCandidate(new RTCIceCandidate(data.candidate))
}
})
А вот код на стороне сервера:
socket.on('sdp', function(data) {
socket.broadcast.emit('data',{sdp: data.sdp});
});
socket.on('candidate', function(data) {
socket.broadcast.emit('data',{candidate: data.candidate});
});
Консоль понятна, но все равно не работает.
Так в чем проблема? И как я могу решить это?
Спасибо!