-
Web Socket 과 HTTP 통신의 차이, Socket.io패키지, 네임스페이스TIL(Today I Learned) 2021. 10. 28. 15:50
간단하게 정리해보자면 HTTP 통신은 옛날 방식의 통신,
Web Socket 방식은 요즘 쓰이는 실시간 양방향 통신
그럼 이 둘의 차이점을 간략하게 정리해보자면
HTTP 통신은
1. 단방향이다. 즉, 클라이언트에서 요청을하고 서버에서 응답하는 방식은 가능하지만 ,
서버에서 요청하고 클라이언트에서 응답하는 방식은 불가능하다.
2. 서버의 리소스를 많이 잡아먹는다. 보낼 데이터가 없어도 계속해서 데이터를 서버에 보내줘야 하므로 불필요한 서버 리소스가 낭비된다.
3. 실시간이 불가능하고 서버에 부담을 준다.. 실시간의 효과를 가져가고 싶다면 서버가 살펴보는 간격을 줄여야하지만 이는 서버나 클라이언트에 과부하를 줄 수 있다.
하지만
Web Socket은
1. 실시간 통신이 가능하다.
한번 프로토콜을 연결하고 나면 따로 서버에서 살펴보지 않아도 데이터만 서로 주고 받으므로 실시간으로 데이터 업데이트가 된다.
2. 양방향 통신이다.
HTTP와 달리 서버에서 클라이언트에게 요청을 할 수 있다.
3. 서버에 부담이 상대적으로 적다.
한번 연결하면 데이터만 서로 주고받는 형식이므로 서버가 주기적으로 살펴보고 업데이트 해야할 필요가 없어서
서버의 부담이 적다.
4. 서버의 리소스를 잡아먹지 않는다.
보낼 데이터가 없다면 보내지 않아도되기 때문.
채팅방을 구현할 때는 WebSocket이 아닌 Socket.io를 사용한다.(학교 졸업 프로젝트에서 채팅방 구현을 맡았었는데, 이때 Node.js의 Socket.io 패키지를 이용하여 구현하였다.)
WebSocket도 기본적으로 실시간 양방향 통신을 제공하여 효율적이지만
보다 더 효율적인 Socket.io가 있다.
Socket.io는 실시간 양방향 통신 + 이벤트 기반 통신이 가능하기 때문이다.
네임스페이스 기능을 통해 개체 범위를 지정한다.
io는 계층적인 구조를 가지는데, io만 설정하여 채팅방을 구현할 경우
사용자들은 원하지 않는 데이터 내역을 수신받게된다. 이때, 네임스페이스 기능과
웹브라우저 고유 id를 room id로 설정하여 사용자들이 입장한 방에서 이뤄지는 채팅 내역만 받거나,
사용자들이 채팅방목록에 있다면 채팅 내역은 보여지지 않고, 새로 만들어지거나 삭제되는 채팅방 목록만 수신받을 수 있다.
'TIL(Today I Learned)' 카테고리의 다른 글
eclipse와 intellij의 차이점, ORM과 JPA란 (0) 2021.10.30 windows 환경에서 JDK와 eclipse 설치 (0) 2021.10.29 javascript ES5+ operator, if, for loop (0) 2021.10.27 Javascript ES5+ (0) 2021.10.26 클라우드 컴퓨팅 (0) 2021.10.25