소켓이란 무엇인가?
프로그램이 네트워크에서 데이터를 주고받을 수 있도록 네트워크 환경에 연결할 수 있게 만들어진 연결부이다.
일반적으로 TCP/IP 프로토콜을 이용한다.
소켓의 종류
안정적인 데이터 송수신을 위해 TCP 소켓을 사용하는 경우가 대부분이다.
하지만 일부 패킷이 손실되어도 괜찮더나 빠른 전송 속도가 필요한 경우 UDP 소켓을 사용하기도 한다.
웹소켓이란?
http에서 실시간 통신을 할 수 없다는 문제를 해결하기 위해 나온 기술이다.
최근 Google Docs 등 여러 협업툴이 실시간 공동 편집 기능, 웹 메신저 등에서 많이 사용되는 기술로 최근 점점 많이 사용하는 기술이지만 일부 브라우저들이 웹소켓을 지원하지 않기 때문에 모든 브라우저에서의 동작을 보장하지는 못한다.
웹소켓 vs socket.io
웹소켓은 양방향 소통을 위한 프로토콜입니다.
프로토콜은 쉽게 말하자면 서로 다른 컴퓨터끼리 소통하기 위한 약속 정도로 이해하면 됩니다.
반면에 socket.io는 양방향 통신을 하기위해 웹소켓 기술을 활용하는 라이브러리입니다. 어찌보면 자바스크립트와 jQuery의 관계와 비슷하다고 볼 수 있습니다.
그렇기 때문에 socket.io가 같은 기능을 구현하더라도 약간 느리지만 많은 편의성을 제공합니다.
둘 사이의 기술적으로 어떤 차이점이 있는지
WebSocket
- HTML5 웹 표준 기술
- 매우 빠르게 작동하며 통신할 때 아주 적은 데이터를 이용함
- 이벤트를 단순히 듣고, 보내는 것만 가능함
Socket.io
- 표준 기술이 아니며, 라이브러리임
- 소켓 연결 실패 시 fallback을 통해 다른 방식으로 알아서 해당 클라이언트와 연결을 시도함
- 방 개념을 이용해 일부 클라이언트에게만 데이터를 전송하는 브로드캐스팅이 가능함
어떤 걸 써야하는가?
서버에서 연결된 소켓(사용자)등르 세밀하게 관리해야하는 서비스인 경우에는 Broadcasting 기능이 있는 socket.io를 쓰는게 유지보수 측면에서 훨씬 이점이 많습니다.
반면 가상화폐 거래소같이 데이터 전송이 많은 경우에는 빠르고 비용이 적은 표준 WebSocket을 이용하는 게 바람직합니다. 실제로 업비트나 바이낸스 소켓 API를 사용해보면 정말 엄청나게 많은 데이터가 들어옵니다.
'CS' 카테고리의 다른 글
22.12.09 / CS특강 / DataBase설계 (0) | 2022.12.11 |
---|---|
22.12.09 / CS특강 / DB 기초 (0) | 2022.12.11 |
22.12.02 / CS특강 / TCP/IP (1) | 2022.12.11 |
22.12.02 / CS특강 / OSI 7계층 (0) | 2022.12.11 |
22.12.01 / CS특강 / JavaScript 기초 (0) | 2022.12.11 |