Я создал демо на Codepen, он работает на основе https://codelabs.developers.google.com/codelabs/webrtc-web/#0 статьи.
У меня есть две кнопки, которые first
выполняются для прослушивания (например, событие join
в статье), а второе - создание соединения (например, создание следующего готового события). основная функция выглядит так:
function createPeerConnection(isInitiator, config) {
console.log('Creating Peer connection as initiator?', isInitiator, 'config:',
config);
peerConn = new RTCPeerConnection(config);
// send any ice candidates to the other peer
peerConn.onicecandidate = function(event) {
console.log('icecandidate event:', event);
if (event.candidate) {
sendMessage({
type: 'candidate',
label: event.candidate.sdpMLineIndex,
id: event.candidate.sdpMid,
candidate: event.candidate.candidate
});
} else {
console.log('End of candidates.');
}
};
if (isInitiator) {
console.log('Creating Data Channel');
dataChannel = peerConn.createDataChannel('photos');
onDataChannelCreated(dataChannel);
console.log('Creating an offer');
peerConn.createOffer(onLocalSessionCreated, logError);
} else {
peerConn.ondatachannel = function(event) {
console.log('ondatachannel:', event.channel);
dataChannel = event.channel;
onDataChannelCreated(dataChannel);
};
}
}
но onopen
событие на канале данных никогда не выполняется и канал находится в состоянии соединения. Код работает, когда я открываю его на том же компьютере (один в режиме инкогнито) в Chromium.
Серверы Turn and Stun, которые я нашел в Интернете. Есть ли способ проверить, все ли в порядке?
Я тестирую этот код, используя два компьютера, подключенных к одному маршрутизатору, но один использует VPN.
1.) Вы можете проверить, правильно ли настроена ваша сеть для вызова с помощью webRTC-тестера: https://test.webrtc.org/
2.) Вы можете проверить, работает ли Turn and Stun Server с помощью: https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/