728x90
반응형
WebRTC 구현 및 궁금증
📝 서버 세팅
import http from "http"; // HTTP 서버 생성을 위한 Node.js 기본 모듈
import SocketIO from "socket.io"; // 실시간 양방향 통신 라이브러리
import express from "express"; // Node.js 웹 프레임워크
// Express 애플리케이션 생성
const app = express();
// 템플릿 엔진 (Pug) 설정
app.set("view engine", "pug"); // Express에게 Pug를 템플릿 엔진으로 사용하도록 설정
app.set("views", __dirname + "/views"); // Pug 템플릿 파일이 있는 디렉토리 지정
// 정적 파일 제공 (public 디렉토리)
app.use("/public", express.static(__dirname + "/public")); // 클라이언트가 public 디렉토리의 파일들에 접근할 수 있도록 설정
// 라우트 정의
app.get("/", (_, res) => res.render("home")); // 루트 URL("/") 접속 시 "home" Pug 템플릿 렌더링
app.get("/*", (_, res) => res.redirect("/")); // 다른 모든 URL은 루트 URL("/")로 리다이렉트
// HTTP 서버 생성 (Express 애플리케이션 사용)
const httpServer = http.createServer(app);
// HTTP 서버를 WebSocket 서버로 업그레이드 (Socket.IO 사용)
const wsServer = SocketIO(httpServer);
// 서버 시작 시 실행될 콜백 함수
const handleListen = () => console.log(`Listening on http://localhost:3000`);
// 3000번 포트에서 서버 시작
httpServer.listen(3000, handleListen);
❗️궁금증
1. WebRTC는 소켓을 사용하지 않는가?
- WebRTC는 기본적으로 Peer-to-Peer(P2P) 통신, 사용자간 직접적인 연결을 통해 미디어 데이터를 주고받음
- P2P연결을 설정하기 위해서 소켓을 통해 초기 연결 설정(시그널링)을 진행
- 시그널링은 두 사용자가 연결을 하기 위해 서로의 정보(IP, Port, 사용 가능 코덱 등)를 교환하는 과정
- 시그널링 서버는 두 사용자간의 메시지(Offer, answer, ICE candidate)를 중계하는 역할
- Offer : 연결을 시작하려는 사용자가 자신의 정보를 담아 상대방에게 보내는 메시지
- Answer : Offer를 받은 사용자가 자신의 정보를 담아 응답하는 메시지
- ICE Candidate : NAT 또는 방화벽 뒤에 있는 사용자들이 서로 직접 연결될 수 있도록 돕는 정보
728x90
반응형
'크래프톤 정글 - TIL' 카테고리의 다른 글
크래프톤 정글 5기 TIL - 나만의 무기 만들기 6(Canvas - Laser pen) (0) | 2024.08.06 |
---|---|
크래프톤 정글 5기 TIL - 나만의 무기 만들기 5(OpenVidu) (1) | 2024.07.12 |
크래프톤 정글 5기 TIL - 나만의 무기 만들기 3(WebRTC) (0) | 2024.07.03 |
크래프톤 정글 5기 TIL - 나만의 무기 만들기 2(카카오 Oauth, Canvas) (0) | 2024.07.02 |
크래프톤 정글 5기 TIL - 나만의 무기 만들기 1(Canvas API) (0) | 2024.07.02 |