[Socket.io] Socket.io

Hyun·2023년 8월 31일
0

nodejs

목록 보기
18/19

업로드중..

1. Socket.io란?

  • 기존의 웹소켓을 사용하면 클라이언트와 서버가 다른 인터페이스를 가지고 사용해야 하며 웹소켓 객체는 또한 모든 브라우저에서 사용할 수 있는 객체가 아니다. (지금은 대부분 해결)
  • Node.js에서 Websocket을 사용할 때 훨씬 더 편하게 사용할 수 있게 만들어 주는 모듈
  • Socket.io를 사용하면 그 모듈로 클라이언트, 서버 모두 컨트롤 할 수 있다. 또한 모든 브라우저에서 사용할 수 있게 된다.

2. Socket.io 특징

2-1) HTTP long-polling fallback

  • WebSocket 연결을 설정할 수 없는 경우 연결은 HTTP Long-polling으로 대체된다.

2-2) Automatic Reconnection

  • 일부 특정 조건에서 서버와 클라이언트 간의 WebSocket 연결이 중단될 수 있으며 양쪽 모두 링크의 끊어진 상태를 인식하지 못한다.
  • 그렇기 때문에 Socket.io는 주기적으로 연결 상태를 확인하는 하트비트 매커니즘이 포함되어 있다.
  • 클라이언트가 결국 연결이 끊어지면 서버에 과부하가 걸리지 않도록 자동으로 다시 연결된다.

2-3) Packet Buffering

  • 클라이언트가 연결 해제되면 패킷이 자동으로 버퍼링되고 다시 연결되면 전송된다.
  • 기본적으로 소켓이 연결되지 않은 동안 발생한 모든 이벤트는 다시 연결될 때까지 버퍼링된다.

2-4) Acknowledgements

  • Socket.io는 이벤트를 보내고 응답을 받는 편리한 방법을 제공한다.
    ex) sender : socket.emit, receiver : socket.on

2-5) Broadcasting

  • 서버 측에서는 연결된 모든 클라이언트 또는 하위 클라이언트에게 이벤트를 보낼 수 있다.

2-6) Multiplexing(다중화)

  • 네임스페이스를 사용하면 단일 공유 연결을 통해 애플리케이션의 논리를 분할할 수 있다.
  • 예를 들어 인증된 사용자만 가입할 수 있는 "관리자" 채널을 만들려는 경우에 유용할 수 있다.

0개의 댓글