[WebRTC] 4. 채팅방 기능 구현하기

2022. 12. 15. 11:05·개발/Projects

지금까지는 자신의 영상 및 음성을 처리하는 기능을 구현했습니다 이제 동일한 방에 참여한 사람들끼리 영상 채팅을 할 수 있는 기능을 하나씩 구현해보도록 하겠습니다.

 

home.pug에서 채팅방을 입력받을 수 있는 인터페이스를 구현해주겠습니다.

// home.pug

div#videoRoomSelect
  form
    h2 Video
    input("type"="text", palcehodler="Please select a room", required)
    button Join
div#videoStreaming
  h2 Video Chat
  video#myFace(autoplay, playsinline, width="400", height="400")
  select#cameras
  select#audios
  button#audioMute Mute
  button#cameraOff Camera Off

다음으로 사용자에게 방 이름을 입력받고 이를 서버에 전달하여 다시 받아오는 로직을 구현합니다. 앞서 텍스트 채팅에서 구현했던 것과 방식은 동일합니다. 사용자가 입력한 방 이름을 저장한 다음 socket.emit을 사용하여 서버로 전달하고 이를 다시 socket.on으로 받아오는 방식입니다.

// app.js

const videRoomSelect = document.getElementById("videoRoomSelect");
const videoRoomSelectForm = videRoomSelect.querySelector("form");
const videoStreaming = document.getElementById("videoStreaming");

videoStreaming.hidden = true;

function showVideoStreaming() {
  videRoomSelect.hidden = true;
  videoStreaming.hidden = false;
}

function handleVideoRoomSelect(event) {
  event.preventDefault();

  const input = videoRoomSelectForm.querySelector("input");
  videoRoomName = input.value;

  socket.emit("videoRoomSelect", videoRoomName, showVideoStreaming);
}

videoRoomSelectForm.addEventListener("submit", handleVideoRoomSelect);

socket.on("videoGreeting", () => {
  console.log("Some has joined!");
});

이제 서버 파일로 이동하여 다음과 같이 프론트와의 웹소켓 통신을 구현해줍니다.

// server.js

socket.on("videoRoomSelect", (videoRoomName, showVideoStreaming) => {
    socket.join(videoRoomName);
    showVideoStreaming();
    socket.to(videoRoomName).emit("videoGreeting");
  });

아래는 이미지는 현재까지 구현된 사항을 캡쳐한 것입니다!

'개발 > Projects' 카테고리의 다른 글

[WebRTC] 5. 라이브 스트리밍 구현 (1) offer & answer  (0) 2022.12.15
[WebRTC] 3. 카메라 오디오 전환하기  (0) 2022.12.14
[WebRTC] 2. 영상 및 음성 켜고 끄기  (0) 2022.12.14
'개발/Projects' 카테고리의 다른 글
  • [WebRTC] 6. 라이브 스트리밍 구현 (2) IceCandidate & Track
  • [WebRTC] 5. 라이브 스트리밍 구현 (1) offer & answer
  • [WebRTC] 3. 카메라 오디오 전환하기
  • [WebRTC] 2. 영상 및 음성 켜고 끄기
휘Hwi
휘Hwi
여행, 사진, 개발, 책 이야기를 기록하는 여행자 휘의 블로그 𓂍
Klook.com
  • 휘Hwi
    휘: 끝나지 않은 이야기
    휘Hwi
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 기록
        • 일상 에세이
        • 인사이트
        • 투자와 재테크
        • 코인 이야기
        • 아카이빙
        • 집무실 레터
        • 사랑에 대하여
        • 번역 이야기(完)
        • 프리랜서 일지(完)
      • 여행
        • 🌎 세계 여행기 S1 (完)
        • 🌊 삼삼한 여행기 (完)
        • 🚶 온더로드
        • 🇯🇵 일본
        • 🏝️ 발리
        • 🇻🇳 베트남
        • 🇱🇰 스리랑카
        • 🇮🇳 인도
        • 🇹🇭 태국
        • 🇸🇬 싱가포르
        • 🇦🇺 호주
        • 🇭🇰 홍콩
        • 🇰🇷 한국
        • 🍚 여행자의 한 끼
        • ℹ️ 여행 정보
      • 사진
        • 사진가
        • 사진 이론과 생각
        • 사진 관련 정보
      • 영상
        • 파이널컷 모션 공부
        • 고프로 GoPro
        • 영상 관련 정보
      • 책
        • 책 읽고 쓰기
      • 개발
        • 티스토리
        • Internet
        • HTML
        • CSS
        • JavaScript
        • Typescript
        • React
        • Node.js
        • Express
        • NestJS
        • Python
        • Django
        • MySQL
        • MongoDB
        • AWS
        • Deployment
        • Terminal
        • Git
        • Glossaries
        • Articles
        • Projects
        • TIL;
      • 미분류
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
휘Hwi
[WebRTC] 4. 채팅방 기능 구현하기
상단으로

티스토리툴바