실시간 통신 및 화상 회의

심채운·2023년 8월 30일
0

cs

목록 보기
9/15

WebSocket

  • WebSocket은 WS 프로토콜을 기반으로 클라이언트와 서버 사이에 지속적인 완전 양방향 연결 스트림을 만들어 주는 기술
  • Transport Protocol의 일종으로 서버와 클라이언트 간의 효율적인 양방향 통신을 실현하기 위한 구조. web socket은 간단한 api로 구성되어 있고, 하나의 HTTP 접속으로 양방향 메시지를 주고 받을 수 있다.
  • web socket api는 기본적인 기능만 제공하고 있으므로 다른 오픈소스 라이브러리를 사용. 메시지 포맷 또한 STOMP같은 프로토콜을 같이 사용.

웹소켓 이전의 기술

  • polling : 서버로 일정 주기 요청 수신
    • real-time 통신에서는 언제 통신이 발생할지 예측이 불가능 (real-time 통신이라 부르기 애매할 정도의 실시간성)
    • 불필요한 request와 connection을 생성
  • long polling : polling의 단점을 최소화 하기 위해 서버에서 조금 더 대기해서 이벤트를 받음
    • 많은 양의 메시지가 쏟아지면 polling과 같아짐
  • streaming : 서버에 요청을 보내고 끊기지 않은 연결상태에서 끊임없이 데이터 수신
    • 클라이언트에서 서버로의 데이터 송신이 어려움
  • 위 3가지 방법들은 모두 HTTP를 통해 통신하므로 request, response 둘 다 header가 불필요하게 큼

HTTP Protocol VS WebSocket Protocol

  • HTTP Protocol은 client에서 server로 request를 보내고 server는 client는 response를 보낸다. 즉, 요청과 응답이 한 묶음이다. HTTP Protocol은 Stateless하다. statelesss란 서버가 유저를 기억하지 못한다는 의미.
  • WebSocket Protocol은 client가 server에게 WebSocket request를 보내고 server가 Web Socket Accept를 한다.handShake가 연결이 된다. handShake가 연결되면 서버는 유저를 기억하고 request -> response 묶음이 해제된다. 그러고 마지막 종료 지점에는 WebSocket Comection closed가 된다.

Stomp

  • Web Socket 프로토콜은 두 가지 유형의 메세지를 정의하고 있지만 그 메세지의 내용까지는 정의하지 않음.

  • STOMP(Simple Text Oriented Messaging Protocol)은 메세지 전송을 효율적으로 하기 위해 탄생한 프로토콜이다. 기본적으로 pub/sub 구조로 되어있어 메세지를 전송하고 메세지를 받아 처리하는 부분이 확실히 정해져 있기 때문에 개발자 입장에서 명확하게 인지하고 개발할 수 있는 이점이 있음.

  • STOMP 프로토콜은 WebSocket 위에서 동작하는 프로토콜로써 클라이언트와 서버가 전송할 메세지의 유형, 형식, 내용들을 정의하는 매커니즘

  • STOMP를 이용하면 메세지의 헤더에 값을 줄 수 있어 헤더 값을 기반으로 통신 시 인증 처리를 구현하는 것도 가능하며 STOMP 스펙에 정의한 규칙만 잘 지키면 여러 언어 및 플랫폼 간 메세지를 상호 운영이 가능하다.

  • STOMP란 TCP 또는 WebSocket 같은 양방향 네트워크 프로토콜 기반으로 동작한다. STOMP는 Text 지향 프로토콜이나, Message Payload에는 Text or Binary 데이터를 포함 할 수 있다.

  • pub/sub란 메세지를 공급하는 주체와 소비하는 주체를 분리해 제공하는 메세징 방법

    • 채팅방 생성 : pub/sub 구혀을 위한 Topic이 생성됨
    • 채팅방 입장 : Topic 구독
    • 채팅방에서 메세지를 송수신 : 해당 Topic으로 메세지를 송신(pub), 메세지를 수신(sub)

WebRTC

  • Web Real-Time Communication의 약자로 웹/앱에서 별다른 소프트웨어 없이 카메라, 마이크 등을 사용하여 실시간 커뮤니케이션을 제공해주는 기술.
  • 화상통화, 화상 공유등을 구현할 수 있는 오픈 소스
  • Peer to Peer 통신을 위해서는 사용자의 IP주소를 알아야함. 하지만 대부분의 사용자는 방화벽등을 사용하고 다른 네트워크 상에서 연결이 이루어지기 위해서는 STUN/TURN 서버가 필요
  • https://gh402.tistory.com/45
profile
불가능, 그것은 사실이 아니라 하나의 의견일 뿐이다. - 무하마드 알리

0개의 댓글