창욱씨 2020. 6. 26. 15:54

Web Socket이란

 Web Application에서 기존의 서버와 클라이언트 간의 통신은 대부분 Http를 통해 이루어졌으며 Http는 Stateless Protocl입니다. 즉, 서버와 클라이언트 간의 Socket Connection같은 영구적인 연결이 되어있지 않고 클라이언트 쪽에서 필요할 때 Reqeust를 보내면 서버가 Response하는 방식으로 통신이 진행됩니다. 이러한 경우 서버쪽 데이터가 업데이트 되더라도 클라이언트 쪽에는 Refresh하지 않는 한 변경된 데이터가 업데이트 되지 않는 문제가 발생합니다. 이러한 문제는 일반적인 Web Application에서는 Ajax와 같은 통신을 사용해도 어느 정도 해결이 가능하지만 데이터의 빠른 업데이트가 아주 중요한 경우에는 한계가 있습니다. 그래서 이를 해결하기 위해 등장한 기술이 Web Socket입니다. Web Socket은 Transport Protocol의 일종으로 서버와 클라이언트 간에 Socket Connection을 유지해서 언제든 양방향 통신 또는 데이터 전송이 가능하도록 하는 기술입니다.

Web Socket의 작동 원리

 우선 서버와 클라이언트 간의 Web Socket 연결은 Http Protocol을 통해 이루어집니다. 만약 연결이 정상적으로 이루어진다면 서버와 클라이언트 간에 Web Socket 연결이 이루어지고 일정 시간이 지나면 Http 연결은 자동으로 끊어집니다.

Web Socket의 단점

 첫 번째 문제는 프로그램 구현에 보다 많은 복잡성이 생길 수 있다는 것입니다. Web Socket은 Http와 달리 Stateful Protocol이기 때문에 서버와 클라이언트 간의 연결을 항상 유지해야하며 만약 비정상적으로 연결이 끊겼을 때, 적절하게 대응해야합니다. 이는 기존의 Http 사용 시와 비교했을 때 코딩의 복잡성을 가중시키는 요인이 될 수 있습니다.
 두 번째 문제는 서버와 클라이언트 간의 Socket 연결을 유지한다는 것 자체가 비용이 드는 일입니다. 특히나 트래픽 양이 많은 서버 같은 경우에는 CPU에 큰 부담이 될 수 있습니다.
 세 번째 문제는 오래된 버전의 웹 브라우저에서는 지원하지 않습니다. 2009년 부터 지원을 시작했기 때문에 IE8과 같은 오래된 브라우저에서는 작동하지 않습니다.

728x90