WebRTC

[WebRTC] Signaling Server ( 시그널링 서버 )

WebRTC에 대해서 이야기를 해봤는데 WebRTC를 유기적으로 잘 사용하기 위해서는 아래와 같은 서버가 필요하다.

 

  1. Signaling - Always needed 

  2. NAT Traversal - need for production 

  3. Media - depends on the app 

이번 포스트는 Signaling Server에 대해 다뤄볼 것이다.

 

😃 Signaling Server란?

 

이전 글에서 알 수 있듯이 WebRTC란 사용자 간의 P2P Connection을 통해 Object를 교환하는 방식이다.

그런데 그냥 P2P Connection만 존재하면 다 통신이 가능해지는 것일까????

 

물론 아니다! 우리는 상대방과 통신을 하기 위해서는 상대방(보낼 주체)이 누구인지를 먼저 파악해야 한다.

 

이를 위해 Signaling Server가 존재하는 것이다.

Signaling  Server는 사용자 간의 WebRTC를 위한 P2P 통신을 할 때 모르는 사용자를 엮어주는 역할을 한다.

 

  1. 브라우저가 사용자의 장치에 접근을 한다.
  2. Signaling Server를 통해 상대방의 정보를 얻는다.
  3. Peer to Peer Connection을 통해 통신한다.

 

 

위 그림을 보면,

사용자는 Peer to Peer Connection을 만들기 위해 Signaling Server에 먼저 접근하여 상대방의 정보(위치)를 알아낸 후 Peer to Peer Connection을 하는 것을 볼 수 있다.

 

🔍 Signaling Server에서 정보 교환해야 할 것들

  • 통신을 열고 닫기 위한 세션 컨트론 메시지들 ( Session Control Messages )
  • 에러 메세지들 ( Error Messages )
  • 코덱 (Codecs) 
  • 대역폭 (Bandwidth)
  • 미디어 유형 (Media Types)
  • IP 주소 (Ip Addresses)
  • 보안 키
  • etc...

 

🔍 Signaling Server의 동작 원리

1. 통신을 원하는 사용자는 상대 사용자에게 Signaling Server를 통해 자신의 정보들을 제공한다. ( ICE 사용 가능 )

2. 상대 사용자는 그 정보들에 대해 자신의 정보를 담아 답장한다. ( ICE 사용 가능 )

 

 

ICE란?

Interactive Connectivity Establishment (ICE)는 브라우저가 Peer를 통한 연결이 가능하도록 하게 해 주는 프레임워크입니다.

 

 

🔍 Signaling Server는 직접 구축해야 할까??

WebRTC와는 별개로 Signaling Server는 구축해야 한다...

 

많은 Cloud Message Platform이 존재하긴 하지만,,, ( ex: Pusher, Kaazing, PubNub )

 

WebRTC Application을 위해 Signaling 서버를 직접 구축해보는 것도 좋은 것 같다.

예를 들어 Web socket, SIP, XMPP/Jingle 기술을 사용하면 된다!!

 

Netty를 사용해볼까?

 

Signaling Server를 어떤 프로그래밍 언어를 만들지는 아래 글을 참고하자

https://bloggeek.me/webrtc-programming-languages/

 

WebRTC Programming Languages and Where they fit • BlogGeek.me

Building an interactive application? There’s more than one WebRTC programming language that can fit your needs.

bloggeek.me

참고 : https://www.youtube.com/watch?v=YWjfs4aWKMc

 

궁금하신 것이 있거나 잘못된게 있으면 언제든지 댓글 달아주세요!

 

반응형

'WebRTC' 카테고리의 다른 글

[WebRTC] TURN 서버의 필요성  (2) 2021.02.08
[WebRTC] WebRTC란?  (1) 2020.12.22