Когда я подключаюсь с помощью Kurento в Firefox, readyState канала данных не изменяется. Одноранговое соединение работает, так как я могу отправлять и получать видео и аудио. В хроме все отлично работает. Я не знаю, связана ли проблема с Куренто.
Вот как я создаю оба канала данных (получение и отправка)
function onExistingParticipants(msg) {
peerConn = new RTCPeerConnection(pc_config);
dataChannel = peerConn.createDataChannel('send', {reliable: false});
dataChannel.binaryType = 'arraybuffer';
dataChannel.onerror = function (error) {
console.log(error);
};
dataChannel.onmessage = function (event) {
console.log('MESSAGE' ,event);
};
dataChannel.onclose = function () {
console.log('close');
};
dataChannel.onopen = function (event) {
console.log('OPEN',event);
};
window.localConnection = peerConn;
var participant = new Participant(msg.user);
participants[msg.user] = participant;
var constraints = {
audio : true,
video : {
mandatory : {
maxWidth : 320,
maxFrameRate : 15,
minFrameRate : 15
}
}
};
var video = participant.getVideoElement();
var options = {
peerConnection : peerConn ,
localVideo: video,
mediaConstraints: constraints,
onicecandidate: participant.onIceCandidate.bind(participant)
}
participant.rtcPeer = new kurentoUtils.WebRtcPeer.WebRtcPeerSendrecv(options,
function (error) {
if(error) {
return console.error(error);
}
this.generateOffer(participant.offerToReceiveVideo.bind(participant));
});
msg.data.forEach(receiveVideo);
}
function receiveVideo(sender) {
remotechannel = remotepeer.createDataChannel('receive');
remotechannel.onerror = function (error) {
console.log(error)
};
remotechannel.onmessage = messages;
remotechannel.onclose = function () {
console.log('close');
};
remotechannel.onopen = function (event) {
console.log('OPEN',event);
};
remotechannel.binaryType = 'arraybuffer';
participants[sender] = participant;
var video = participant.getVideoElement();
var options = {
peerConnection : remotepeer ,
remoteVideo: video,
onicecandidate: participant.onIceCandidate.bind(participant)
}
participant.rtcPeer = new kurentoUtils.WebRtcPeer.WebRtcPeerSendrecv(options,
function (error) {
if(error) {
return console.error(error);
}
this.generateOffer(participant.offerToReceiveVideo.bind(participant));
}
);
}
На стороне сервера для комнаты присоединения и получения конечной точки для пользователя
room.pipeline.create('WebRtcEndpoint', {useDataChannels: true}, (error, webRtc) => {
....
}