일반적으로 HTTP 프로토콜은 클라이언트에서 서버로 요청을 보내고, 서버는 그에 대한 응답을 다시 클라이언트에게 보내는 단방향 통신 방식이다.
웹소켓은 이러한 단방향 통신의 한계를 극복하고 양방향 통신을 가능하게 한다.
웹소켓은 TCP 기반의 프로토콜로, 클라이언트와 서버 간에 지속적인 연결을 유지한다. 이를 통해 실시간으로 데이터를 주고받을 수 있다. 웹소켓은 실시간 채팅, 온라인 게임, 주식 시세 업데이트 등 실시간 데이터 전송이 필요한 다양한 웹 애플리케이션에 사용된다.
Socket.IO는 실시간 웹 애플리케이션을 개발하기 위한 웹소켓(WebSocket)을 기반으로 한 JavaScript 라이브러리이다.
실시간 양방향 통신: 클라이언트와 서버 간의 양방향 통신을 가능하게 합니다. 이를 통해 실시간으로 데이터를 주고 받을 수 있다.
WebSocket 폴백(fallback): 웹소켓을 기본으로 사용하지만, 웹소켓을 지원하지 않는 환경에서는 폴백(fallback) 방식을 통해 실시간 통신을 지원한다.
이벤트 기반 통신: 클라이언트와 서버 간의 통신을 이벤트 기반으로 처리한다. 클라이언트나 서버에서 이벤트를 발생시켜 데이터를 주고 받는다.
룸(Room): 클라이언트를 그룹으로 분류하고 관리할 수 있는 방법을 제공한다. 이를 통해 특정 그룹에 메시지를 전달하거나 특정 그룹의 연결을 제어할 수 있다.
네임스페이스(Namespace): 소켓의 그룹을 나누는 방법을 제공한다. 각 네임스페이스는 별도의 연결을 가지며, 다양한 옵션과 이벤트를 설정할 수 있다.