본문 바로가기
C.W.K.
Stream
Lesson 01 of 07 · published

Socket.IO 가 뭐야?

~12 min · library, socket-io

Level 0Poller
0 XP0/60 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

Socket.IO 는 WebSocket 이 아니야

Socket.IO 에서 가장 중요한 사실이야. Socket.IO 는 WebSocket 위에 올라가는 사용자 지정 프로토콜 이고 HTTP long polling 을 대체 전송 방식으로 사용해. 브라우저 기본 WebSocket 클라이언트는 Socket.IO 서버와 통신할 수 없고, 일반 WebSocket 서버도 Socket.IO 클라이언트를 받을 수 없어. ‘방’과 ‘이벤트’ 같은 말을 공유하지만 서로 통신하려면 Socket.IO SDK 가 필요해.

Socket.IO 가 더해 주는 기능

자동 재연결, 방과 네임스페이스를 통한 다중 채널, 콜백 방식 요청·응답인 ACK, WebSocket 에서 HTTP long polling 으로 자동 전환하는 대체 수단, Redis 와 Postgres 를 위한 확장 어댑터를 제공해. 채팅, 공동 작업, 알림 모양의 앱이라면 기본 WebSocket 보다 빠르게 완성할 수 있어.

대가: 특정 생태계에 묶여

Socket.IO 를 고르면 웹, 모바일, 서버 간 통신을 포함한 모든 클라이언트가 Socket.IO 라이브러리를 써야 해. 클라이언트를 모두 직접 관리한다면 괜찮아. 하지만 게임 스튜디오, 파트너, IoT 기기 같은 제3자가 임의의 도구로 연결해야 한다면 문제가 돼.

Code

Socket.IO 프로토콜 계층·text
  Application code              <-- what you write
  --------------------------
   Socket.IO API              <-- rooms, namespaces, acks, events
  --------------------------
   Engine.IO                  <-- connection mgmt, transport switching
  --------------------------
   WebSocket | HTTP polling    <-- actual transport(s)

External links

Exercise

Socket.IO 서버를 띄우고 브라우저 개발자 도구의 네트워크 탭에서 연결을 살펴봐. 먼저 일반 HTTP polling 을 주고받은 뒤 WebSocket 으로 전환하는 두 단계를 확인해. 이어서 기본 WebSocket 클라이언트(websocat ws://localhost:3000) 로 연결해 실패하는 것을 보고 같은 프로토콜이 아님을 직접 확인해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.