buydadip
buydadip

Reputation: 9407

webRTC error undefined configuration

I have the following in my client.js file...

window.onload = function() {


  var peerConnection;
  var peerConnectionConfig = {
    'iceServers': [{
      'url': 'stun:stun.services.mozilla.com'
    }, {
      'url': 'stun:stun.l.google.com:19302'
    }]
  };

  navigator.getUserMedia = navigator.getUserMedia || navigator.mozGetUserMedia || navigator.webkitGetUserMedia;
  window.RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
  window.RTCIceCandidate = window.RTCIceCandidate || window.mozRTCIceCandidate || window.webkitRTCIceCandidate;
  window.RTCSessionDescription = window.RTCSessionDescription || window.mozRTCSessionDescription || window.webkitRTCSessionDescription;


  var video = document.getElementById("video");
  var remote = document.getElementById("remoteVideo");
  var cameraStream = "";

  serverConnection = new WebSocket('ws://127.0.0.1:3434');
  serverConnection.onmessage = gotMessageFromServer;


  serverConnection.onmessage = gotMessageFromServer;

  var constraints = {
    video: true,
    audio: false,
  };

  if (navigator.getUserMedia) {
    navigator.getUserMedia(constraints, getUserMediaSuccess, getUserMediaError);
  } else {
    alert('Your browser does not support getUserMedia API');
  }



}

function getUserMediaSuccess(stream) {
  localStream = stream;
  video.src = window.URL.createObjectURL(stream);
}

function getUserMediaError(error) {
  console.log(error);
}

function connect() {
  start(true);
}



function start(isCaller) {

  peerConnection = new RTCPeerConnection(peerConnectionConfig);
  peerConnection.onicecandidate = gotIceCandidate;
  peerConnection.onaddstream = gotRemoteStream;
  peerConnection.addStream(localStream);

  if (isCaller) {
    peerConnection.createOffer(gotDescription, createOfferError);
  }
}

function gotDescription(description) {
  console.log('got description');
  peerConnection.setLocalDescription(description, function() {
    serverConnection.send(JSON.stringify({
      'sdp': description
    }));
  }, function() {
    console.log('set description error')
  });
}

function gotIceCandidate(event) {
  if (event.candidate != null) {
    serverConnection.send(JSON.stringify({
      'ice': event.candidate
    }));
  }
}

function gotRemoteStream(event) {
  console.log("got remote stream");
  remote.src = window.URL.createObjectURL(event.stream);
}

function createOfferError(error) {
  console.log(error);
}

function gotMessageFromServer(message) {
  if (!peerConnection) start(false);


  var signal = JSON.parse(message.data);
  if (signal.sdp) {
    peerConnection.setRemoteDescription(new RTCSessionDescription(signal.sdp), function() {
      peerConnection.createAnswer(gotDescription, createAnswerError);
    });
  } else if (signal.ice) {
    peerConnection.addIceCandidate(new RTCIceCandidate(signal.ice));
  }
}

The error I get is client.js:60 Uncaught ReferenceError: peerConnectionConfig is not defined

I define peerConnectionConfig at the top, as shown...

var peerConnectionConfig = {'iceServers': [{'url': 'stun:stun.services.mozilla.com'}, {'url': 'stun:stun.l.google.com:19302'}]};

And start(isCaller) is called when a button is pressed, which then goes to this line...

peerConnection = new RTCPeerConnection(peerConnectionConfig);

...which throws the error. Any reason as to why?

Upvotes: 1

Views: 2782

Answers (1)

mido
mido

Reputation: 25034

it is normal scoping issue, you have declared variables in window.onload anonymous function and trying to access it directly in other functions, thus the error.

Upvotes: 1

Related Questions