Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

HTML5의 createSignalingChannel() 예


웹 RTC는 브라우저 간의 P2P 통신이 필요했습니다. 이 메커니즘에는 신호, 네트워크 정보, 세션 제어 및 미디어 정보가 필요했습니다. 웹 개발자는 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));
};