Web RTC

인삼주·2023년 9월 6일
0

spring

목록 보기
20/22

webRTC

3가지 클래스에 의해 실시간 데이터 교환이 일어난다.

  • MediaStream - 카메라/마이크 등 데이터 스트림 접근
  • RTCPeerConnection - 암호화 및 대역폭 관리 및 오디오 또는 비디오 연결
  • RTCDataChannel - 일반적인 데이터 P2P 통신

이 세가지 객체를 통해 데이터 교환이 이뤄지며
RTCPeerConnection들이 적절하게 데이터를 교환할 수 잇게 처리하는 과정을 시그너링 이라고 한다.

연결을 요청한 caller와 연결을 받는 callee가 존재함.
콜러와 콜리가 통신을 하기 위해서는 중간 역할을 하는 서버가 필요하다.


용어 정리

Stun Server, Turn Server

: web RTC는 P2P에 최적화 되어있다. peer들간의 공인 네트크주소(ip)를 알아 데이터 교환을 해야하는데, 실제 개개인의 컴퓨터는 방화벽 등 여러가지 보호장치들이 존재하고 있다. 그래서 peer들간의 연결이 쉽지 않은데, 이렇게 서로간의 연결을 위한 정보를 공유하여 p2p 통신을 가능하게 해주는 것이 Stun/Turn Server 이다.

SDP(Session Description Protocol)

: SDP는 세션 기술 프로토콜로, 스트리밍 미디어의 초기화 인수를 기술하기 위한 포맷이다.
이 규격은 IETF의 RFC 4566으로 규정되어있다.
WEB RTC는 SDP 포맷에 맞춰져 음성, 영상 데이터를 교환하고 있다.

Ice(Interactive Connectivity Establishment)

: NAT 환경에서 자신의 public IP를 파악하고 상대방에게 데이터를 전송하기 위한 Peer간의 응답 프로토콜로 일반적으로 Stun/Turn을 이용하여 구축한다.
간단하게 설명하면, 한쪽이 offer을 보내면 다른 한쪽이 answer함으로써 피어간 연결이 설정된다.


스프링에서 웹 소켓을 쓰기 위한 기본 설정

(참고:
1. https://velog.io/@peachy/%EC%9B%B9%EC%86%8C%EC%BC%93-%EC%A0%81%EC%9A%A9
2. https://bbo-blog.tistory.com/39)

1) pom.xml에 dependency 추가

	<!-- WebSocket Start-->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-websocket</artifactId>
			<version>4.0.9.RELEASE</version>
		</dependency>
		
		<dependency>
			<groupId>javax.websocket</groupId>
			<artifactId>javax.websocket-api</artifactId>
			<version>1.1</version>
		</dependency>
		<!-- WebSocket End-->

2) servlet-context.xml에 bean 추가

진행중...
https://velog.io/@guswns3371/WebSocket-Spring

https://velog.io/@younseo1016/221029-Web-Socket

0개의 댓글