ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 웹 소켓(WebSocket)
    카테고리 없음 2020. 8. 19. 20:49

    웹소켓

     

     서버와 클라언트간의 효율적인 양방향 통신을 실현하기 위한 구조

     

     간단한 API구조로 구성되어 있다.

     

     웹 소켓을 이용하면 하나의 HTTP 접속으로 양방향 메세지를 자유롭게 주고받을 수 있다.

     

     XMLHttpRequest와 Server-Sent Event를 조합해서 양방향 통신을 구현하는 경우와 비교해 통신 효율이 좋고, 설계나 구현도 간단해진다.

     

    - - -

      * XMLHttpRequest

     

        클라이언트에서 서버 방향으로 비동기 통신은 XHR(XMLHttpRequest)의 등장으로 실현됐다.

     

        그 이전부터 iframe이나 img등을 써서 억지로 비동기 통신을 구현하는 방법은 있었지만 XMLHttpRequest가 쓰이면서 비동기 통신 

     

       기술이 비약적으로 발생

     

      but XHR은 크로스 오리진 통신이 불가능 하다.

    - - -

     

     - - -

    크로스 오리진 통신

     

    오리진(Origin)이란 스키마, 호스트명, 포트 번호의 조합으로 표현되는 식별자를 말한다.

     

    웹 스토리지에 보존되는 데이터는 동일 오리진으로 동작하는 프로그램에서만 공유되고, 다른 오리진에서 동작하는 프로그램에서는

     

    웹 스토리지를 참조할 수 없다.

     

    이처럼 동일 오리진의 경우에만 접근을 허가하는 것을 동일 출처 정책(Same Orgin Policy)라고 한다.

     

    또한 반대로, 어떻게 해서 다른 오리진 간의 접근을 안전하게 할 것인가에 초점을 둔 크로스 오리진 자원 공유(CORS, Cross-Origin

     

    Resource Sharing)이라는 것도 있다.

     

    오리진은 HTML5 관련 기술의 보안에 대해 이야기할 때 자주 등장하는 용어이다.

     

    - - -

     

    크로스 오리진 통신을 구현하기 위해 JSONP등의 우회책이 고완됐고, 현재도 폭넓게 이용되고 있다.

     

    XHR은 기존의 무상태 통신 기술의 연장선상에서 고안된 기술이다.

     

    웹소켓 통신과 비교하면 XHR에서는 통신할 떄마다 꼭 요청 헤더가 부여되기 때문에 불과 1바이트의 정보를 송신하고 싶어도

     

    수 킬로바이트에 다랗는 쓸데없는 정보를 보내야 한다.

     

    예를 들어, 채팅 입력을 한 문자마다 서버에 송신하고 싶은 경우처럼 실시간을 추구한 애플리케이션에서는 이 점이

     

    성능 차이로 이어질 가능성이 크다.

     

     - - -

    Server-Sent Events

     

    서버에서 클라이언트 방향으로 통신(푸시 통신) 기술로서는 오랫동안 표준이라고 불릴 만한 요소 기술이 존재하지 않았기 때문에

     

    해킹에 해킹을 더한 다소 억지스러운 방법이 널리 이용됐다.

     

    현재 W3C에서는 서버에서는 푸쉬 통신을 깔끔하게 실현하기 위해 Server-Sent Event 의 사양 검토가 진행되고 있다.

     

    Server-Sent Events의 특징은 사양한 따르는 포맷으로 서버 사이드에서 일반적인 HTTP 응답을 반환하는 것만으로

     

    푸시 통지가 실현되기 때문에 기존의 HTTP 서버에 관현 노하우를 그대로 살려 설계나 구현을 할 수 잇다는 것이다.

     

    또한 프로토콜이 매우 간단하고 사양도 안정되어 있어, 비교적 안심하고 사용할 수 있다.

     

    단지 푸시 통신은 이미 시장에서 큰 수요가 있음에도 불구하고, Server-Sent Events나 웹소켓을 이용할 수 없는 브라우저가

     

    아직 존재하고 있다.

     

     

     

    https://webclub.tistory.com/463

     

    웹소켓이란?

    WebSocket 이 글에서는 브라우저 기반 애플리케이션에 효율적인 양방향 통신을 구현하기 위한 기술인 웹소켓에 대한 개념을 짚어 보도록 합니다. 오랫동안 큰 진전이 없었던 통신 관련 기술이지만

    webclub.tistory.com

    참고했습니다.


     

    댓글

Designed by Tistory.