WebRTCの概要


定義#テイギ#


Webリアルタイム通信(Web Real-time Communication)は、Webアプリケーションおよびサイトがオーディオおよび/またはビデオメディアをキャプチャし、仲介者を必要とせずにブラウザ間で任意の数のデータを交換できるように選択的にストリーミング処理を行うことを可能にする技術である.

peer-to-peer


インターネットに接続された多くの個別ユーザーが仲介機関を経由せずに直接データを交換することを指す.

(出典:https://m.blog.naver.com/pcmola/222092887306)

Signaling


2つのデバイス間でWebRTC接続を確立するには、インターネットネットワーク上で接続するためのシグナリングサーバが必要です.
まず、信号サーバ自体が必要です.WebRTCは、シグナリング情報の伝送メカニズムを提供しない.ハリー・ポッターのフクロウのように2つの対等体の間で信号に関する情報を伝えることができれば、WebSocketでもXMLHttpRequestでも.

文書:https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API

ルーム(部屋を作成+部屋に入る)


  • app.js
    // 화상화면이 나오는 div
    const call = document.getElementById("call");
    // 방 이름 input + 입장하기 버튼 form 담긴 div
    const welcome = document.getElementById("welcome");
    // 방 이름 input + 입장하기 버튼 form
    const welcomeForm = welcome.querySelector("form");
    
    let roomName;
    
    function handleWelcomeSubmit(event) {
      event.preventDefault();
      const input = welcomeForm.querySelector("input");
      // 서버로 join_room 메세지 타입으로 room name과 end 함수보냄
      socke.emit("join_room", input.value, startMedia);
      roomName = input.value;
      input.value = "";
    }
    
    // 방 입장 div 숨기고 화상화면 보여줌
    await function startMedia() {
      welcome.hidden = true;
      call.hidden = false;
      await getMedia();
    }
    
    welcomeForm.addEventListener("submit", handleWelcomeSubmit);
    
    // Socket Code
    // 다른 사용자가 입장하면 원래 있던 사용자에게 알림이 감
    socket.on("welcome", () => {
      console.log("somebody joined");
    })

  • server.js
    wsServer.on("connection", (socket) => {
      // "join_room" 메세지 이벤트
      socket.on("join_room", (roomName, done) => {
        // roomName 에 접속
        socket.join(roomName);
        // done 함수 실행 (startMedia)
        done();
        // 다른 사용자가 연결되었을 때 roomName 으로 "welcome" 메세지 보내기
        socket.to(roomName).emit("welcome");
      });
    ));