chrome version: 99.0.4844.84
stun server: stun:stun.l.google.com:19302
websocket server: send right offer sdp
problem: i can not gather reflex candidate and relay candidate, but stun server is test ok
code as follow:
<head>
<video id="video_id" width="480" height="320" autoplay></video>
<br>
<button id="start_btn">start</button>
</br>
<script src="adapter.js"></script>
<script>
'use strict';
var rtcPeerConns = null;
var conn = null;
var remoteStream = null;
var desc = null;
var video_id = document.getElementById('video_id');
var start_btn_id = document.getElementById('start_btn');
start_btn_id.addEventListener('click', start);
async function start()
{
if (window["WebSocket"])
{
var addr = "ws://" + "wslhost" + ":5050";
conn = new WebSocket(addr);
conn.onopen = function(evt)
{
console.log('1111 websocket open')
}
conn.onclose = function(evt)
{
console.log('websocket close')
}
conn.onmessage = function(evt)
{
gotoffer(evt.data)
}
}
const servers = {'iceServers': [{'urls':'stun:stun.l.google.com:19302'}]};
// const offerOptions = {offerToReceiveAudio: 1,offerToReceiveVideo: 1};
rtcPeerConns = new RTCPeerConnection(servers);
console.log('Created remote peer connection object rtcPeerConns');
rtcPeerConns.onicecandidate = e => onIceCandidate(rtcPeerConns, e);
rtcPeerConns.ontrack = gotRemoteStream;
rtcPeerConns.onicegatheringstatechange = gatheringStateChange;
}
async function gotoffer(offer)
{
var desc = new RTCSessionDescription();
desc.sdp = offer;
desc.type = 'offer';
rtcPeerConns.setRemoteDescription(desc)
await rtcPeerConns.createAnswer().then(
getLocalSdpSuccess,
getLocalSdpFailed
);
}
async function onIceCandidate(pc, event) {
try {
onAddIceCandidateSuccess(pc);
} catch (e) {
onAddIceCandidateError(pc, e);
}
console.log(`ICE candidate:\n${event.candidate ? event.candidate.candidate : '(null)'}`);
}
function onAddIceCandidateSuccess(pc)
{
}
function onAddIceCandidateError(pc, err)
{
}
function gotRemoteStream(event) {
console.log('222 Received remote stream');
if (video_id.srcObject !== event.streams[0]) {
video_id.srcObject = event.streams[0];
remoteStream = event.streams[0];
console.log('222 rtcPeerConns received remote stream');
}
}
function gatheringStateChange() {
console.log(rtcPeerConns.iceGatheringState);
if (rtcPeerConns.iceGatheringState === 'complete') {
console.log('333 ICE Complete');
}
}
function getLocalSdpSuccess(desc){
rtcPeerConns.setLocalDescription(desc);
console.log('444 get local sdp: \n' + desc.sdp);
}
function getLocalSdpFailed(sdp){
}
function onAddIceCandidateError(pc, error) {
console.log(`failed to add ICE Candidate: ${error.toString()}`);
}
</script>
</head>
chrome version
: 99.0.4844.84stun server
: stun:stun.l.google.com:19302websocket server
: send right offer sdpproblem
: i can not gather reflex candidate and relay candidate, but stun server is test okcode as follow:
offer sdp from websocket server:
web local sdp