Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ตัวอย่าง createSignalingChannel() ใน HTML5


WebRTC ต้องการการสื่อสาร peer-to-peer ระหว่างเบราว์เซอร์ กลไกนี้ต้องการ signaling, ข้อมูลเครือข่าย, ควบคุมเซสชัน และข้อมูลสื่อ นักพัฒนาเว็บสามารถเลือกกลไกต่างๆ เพื่อสื่อสารระหว่างเบราว์เซอร์ เช่น SIP หรือ XMPP หรือการสื่อสารสองทิศทางใดๆ ตัวอย่าง createSignalingChannel():

var signalingChannel = createSignalingChannel();
var pc;
var configuration = ...;
// run start(true) to initiate a call
function start(isCaller) {
  pc = new RTCPeerConnection(configuration);
  // send any ice candidates to the other peer
  pc.onicecandidate = function(evt) {
    signalingChannel.send(JSON.stringify({"candidate": evt.candidate}));
  };
  // once remote stream arrives, show it in the remote video element
  pc.onaddstream = function(evt) {
    remoteView.src = URL.createObjectURL(evt.stream);
  };
  // get the local stream, show it in the local video element and send it
  navigator.getUserMedia({"audio": true, "video": true}, function(stream) {
    selfView.src = URL.createObjectURL(stream);
    pc.addStream(stream);
    if (isCaller)
      pc.createOffer(gotDescription);
    else
      pc.createAnswer(pc.remoteDescription, gotDescription);
    function gotDescription(desc) {
      pc.setLocalDescription(desc);
      signalingChannel.send(JSON.stringify({"sdp": desc}));
    }
  });
}
signalingChannel.onmessage = function(evt) {
  if (!pc)
    start(false);
  var signal = JSON.parse(evt.data);
  if (signal.sdp)
    pc.setRemoteDescription(new RTCSessionDescription(signal.sdp));
  else
    pc.addIceCandidate(new RTCIceCandidate(signal.candidate));
};