Back-end/Netty

[Netty] ์ฐจ๊ทผ์ฐจ๊ทผ ์‹œ๊ทธ๋„๋ง ์„œ๋ฒ„ ( Signaling Server ) ๋งŒ๋“ค๊ธฐ ( feat. WebRTC ) - (1) ์„ค๊ณ„

 

๐Ÿ’ก ๊ฐœ์š”

WebRTC๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์‚ฌ์šฉ์ž์˜ ์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•ด์ฃผ๊ธฐ ์œ„ํ•œ ์‹œ๊ทธ๋„๋ง ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

๋„คํ‹ฐ๋ฅผ ์ด์šฉํ•ด ์‹œ๊ทธ๋„๋ง ์„œ๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•ด๋ณด์ž

 

์‹œ๊ทธ๋„๋ง ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค๊ธฐ ์ „์— ์šฐ์„  WebRTC๊ฐ€ ์‹œ๊ทธ๋„๋ง ์„œ๋ฒ„๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ์ด์œ ๋ฅผ ์•Œ์•„๋ณด์ž

withseungryu.tistory.com/130

 

[WebRTC] Signaling Server ( ์‹œ๊ทธ๋„๋ง ์„œ๋ฒ„ )

WebRTC์— ๋Œ€ํ•ด์„œ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ดค๋Š”๋ฐ WebRTC๋ฅผ ์œ ๊ธฐ์ ์œผ๋กœ ์ž˜ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•˜๋‹ค. Signaling - Always needed NAT Traversal - need for production Media - depends on the app ์ด๋ฒˆ..

withseungryu.tistory.com

 

๐Ÿ” ์„ค๊ณ„

WebRTC๋ฅผ ์‚ฌ์šฉํ•ด ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•œ ๋‘๋ช…์˜ ์‚ฌ์šฉ์ž ( sender, receiver )๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž.

๊ทธ๋ ‡๋‹ค๋ฉด, sender๊ฐ€ ๋จผ์ € ํ†ต์‹ ์„ ์‹œ๋„ํ•  ๊ฒƒ์ด๊ณ  receiver์—๊ฒŒ ํ†ตํ™”๋ฅผ ๊ฑธ๊ณ ์ž ํ•œ๋‹ค.

 

์‹œ๊ทธ๋„๋ง ์„œ๋ฒ„์™€ ์–ด๋–ป๊ฒŒ ์ง„ํ–‰์ด ๋ ๊นŒ?

์œ ๋ช…ํ•œ ์•จ๋ฆฌ์Šค์™€ ์ด๋ธŒ์˜ WebRTC ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋ณด๋ฉด์„œ ์ดํ•ด ๋จผ์ € ํ•˜์ž!

์ฐธ๊ณ  :  www.html5rocks.com/ko/tutorials/webrtc/infrastructure/

 

์‹œ๋‚˜๋ฆฌ์˜ค

sender์™€ receiver๋Š” ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด ์›น์— ๋“ค์–ด์™€ ์‹œ๊ทธ๋„๋ง ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐํ•œ๋‹ค.

 

  1. sender๋Š” ๋งŒ๋“ค๊ณ ์ž ํ•˜๋Š” ๋ฐฉ์˜ ์ œ๋ชฉ(์ด๋ฆ„)์„ ์‹œ๊ทธ๋„๋ง ์„œ๋ฒ„์— ๋„˜๊ฒจ์ค€๋‹ค. ( ๋ฐฉ ์ƒ์„ฑ )
  2. ์‹œ๊ทธ๋„๋ง ์„œ๋ฒ„๋Š” ๋„˜๊ฒจ์ง„ ๋ฐฉ์˜ ์ด๋ฆ„๊ณผ sender์™€ ์—ฐ๊ฒฐ๋œ ์ปค๋„ฅ์…˜์„ ์ €์žฅํ•œ๋‹ค.
  3. ๋ฐฉ์„ ์ƒ์„ฑํ•œ sender๋Š” ํ†ตํ™”๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค. ( RTCPeerConnection ์ƒ์„ฑ )
  4. ์ด๋•Œ ์ƒ์„ฑ๋œ RTCPeerConnection์— ๊ด€ํ•œ candidate์™€ SDP(offer)๋ฅผ ์ƒ์„ฑํ•œ ํ›„ ์„œ๋ฒ„์— ๋„˜๊ฒจ์ค˜ ์ €์žฅ์‹œํ‚จ๋‹ค.
  5. receiver๋„ ํ†ต์‹ ํ•˜๊ธฐ ์›ํ•˜๋ฉด RTCPeerConnection์„ ์ƒ์„ฑํ•˜๊ณ  candidate๋ฅผ ์„œ๋ฒ„์— ๋„˜๊ฒจ์ค€๋‹ค.
  6. receiver์˜ candidate๋ฅผ ๋ฐ›์€ ์„œ๋ฒ„๋Š” sender์—๊ฒŒ candidate๋ฅผ ๋„˜๊ฒจ์ฃผ๋ฉด sender๋Š” ์ด๋ฅผ ํ™œ์šฉํ•ด ICE Candidate๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
  7. ๊ทธ๋ฆฌ๊ณ  receiver์—๊ฒŒ๋Š” sender์˜ SDP(offer)์™€ candidate๋ฅผ ๋„˜๊ฒจ์ค€๋‹ค.
  8. receiver๋Š” ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ๋ฐ›์€ sender์˜ SDP(offer)์™€ candidate๋ฅผ ์ด์šฉํ•ด RemoteDescription์„ ์…‹ํŒ…ํ•˜๊ณ , ICE Candidate๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
  9. ๊ทธ๋ฆฌ๊ณ  receiver๋Š” ์„œ๋ฒ„์—๊ฒŒ answer๋ฅผ ์ฃผ๊ณ , ์„œ๋ฒ„๋Š” ์ด๋ฅผ ๋ฐ›๊ณ  sender์—๊ฒŒ receiver์˜ answer๋ฅผ ๋„˜๊ฒจ ์ค€๋‹ค.
  10. sender๋Š” receiver์˜ answer๋ฅผ ๋ฐ›์€ ํ›„ RemoteDescription์„ ์…‹ํŒ…ํ•œ๋‹ค.
  11. ์ด๋กœ์จ sender์™€ receiver ๋‘˜ ๋‹ค Real Time Communication์„ ํ•  ์ค€๋น„๋ฅผ ๋๋ƒˆ๋‹ค.

๋ฌด์—‡์„ offerํ•˜์ง€?

SDP = ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฏธ๋””์–ด์˜ ์ดˆ๊ธฐํ™” ์ธ์ˆ˜๋ฅผ ๊ธฐ์ˆ ํ•˜๊ธฐ ์œ„ํ•œ ํฌ๋งท์ž…๋‹ˆ๋‹ค.

 

candidate๋ž€? 

ํ”ผ์–ด ํˆฌ ํ”ผ์–ด ํ†ต์‹ ์„ ํ•˜๋ ค๋Š” ์–‘์ชฝ์€ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ์— ๊ด€ํ•œ ์ •๋ณด๋„ ๊ตํ™˜ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋•Œ์˜ ๋„คํŠธ์›Œํฌ ์ •๋ณด.

 

๊ธ€๋กœ ์„ค๋ช…ํ•˜๋ ค๋‹ˆ ์–ด๋ ค์šด ๊ฒƒ ๊ฐ™๋‹ค. 

 

๊ทธ๋ฆผ์„ ์‰ฝ๊ฒŒ ํ‘œํ˜„์„ ํ•ด๋ณด์ž.

 

๊ทธ๋ฆผ

A. ์„ค๊ณ„๋„

 B. ์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ

 

 

์ด๋กœ์จ WebRTC๋ฅผ ํ™œ์šฉํ•œ ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‹œ๊ทธ๋„๋ง ์„œ๋ฒ„๊ฐ€ ํ•ด์•ผํ•  ์ผ๋“ค์„ ์ •๋ฆฌํ•ด๋ดค๋‹ค.

 

์ฐจ๊ทผ์ฐจ๊ทผ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•ด๋ณด์ž!

 

์ฐธ๊ณ : www.youtube.com/watch?v=wr-4Oqa0FG0

 

๊ถ๊ธˆํ•˜์‹  ๊ฒƒ์ด ์žˆ๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ๊ฒŒ ์žˆ์œผ๋ฉด ์–ธ์ œ๋“ ์ง€ ๋Œ“๊ธ€ ๋‹ฌ์•„์ฃผ์„ธ์š”!

๋ฐ˜์‘ํ˜•