webRTC
3가지 클래스에 의해 실시간 데이터 교환이 일어난다.
이 세가지 객체를 통해 데이터 교환이 이뤄지며
RTCPeerConnection들이 적절하게 데이터를 교환할 수 잇게 처리하는 과정을 시그너링 이라고 한다.
연결을 요청한 caller와 연결을 받는 callee가 존재함.
콜러와 콜리가 통신을 하기 위해서는 중간 역할을 하는 서버가 필요하다.
용어 정리
: web RTC는 P2P에 최적화 되어있다. peer들간의 공인 네트크주소(ip)를 알아 데이터 교환을 해야하는데, 실제 개개인의 컴퓨터는 방화벽 등 여러가지 보호장치들이 존재하고 있다. 그래서 peer들간의 연결이 쉽지 않은데, 이렇게 서로간의 연결을 위한 정보를 공유하여 p2p 통신을 가능하게 해주는 것이 Stun/Turn Server 이다.
: SDP는 세션 기술 프로토콜로, 스트리밍 미디어의 초기화 인수를 기술하기 위한 포맷이다.
이 규격은 IETF의 RFC 4566으로 규정되어있다.
WEB RTC는 SDP 포맷에 맞춰져 음성, 영상 데이터를 교환하고 있다.
: 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 추가