본문 바로가기
개발/Node.js

[Node.js] 웹소켓 io.on 과 socket.on 차이

by WaDDak 2024. 10. 1.

io.on과 socket.on은 각각 Socket.IO 서버의 이벤트 처리 방식에서 사용되며, 그 역할과 의미가 다릅니다.

1. io.on

  • io.on은 서버 차원의 이벤트 리스너입니다. io는 Socket.IO 서버 객체이므로, 이 객체를 통해 클라이언트의 연결(또는 기타 서버 전역 이벤트)을 처리할 수 있습니다.
  • 주로 connection 이벤트를 감지하여 새로운 클라이언트가 서버에 연결되었을 때 실행할 코드를 정의합니다.
  • 즉, 새로운 소켓 연결이 발생할 때마다 그 소켓에 대한 이벤트를 처리할 수 있도록 준비합니다.

예시:

 
io.on("connection", (socket) => {
  // 클라이언트가 연결될 때마다 실행되는 코드
});

2. socket.on

  • socket.on은 각각의 연결된 클라이언트 소켓에서 발생하는 이벤트를 처리합니다.
  • 즉, 클라이언트와 서버 간에 연결이 성립된 후, 개별 소켓 객체에서 발생하는 이벤트(메시지, 이벤트 명령 등)를 감지하여 처리합니다.
  • 주로 클라이언트가 보내는 특정 이벤트(예: 메시지 전송, 데이터 전송 등)를 서버에서 처리할 때 사용됩니다.

예시:

socket.on("disconnect", () => {
  // 이 소켓이 연결이 끊길 때 실행되는 코드
});

차이점 요약

  • io.on("connection", ...): 서버 차원에서 새로운 클라이언트가 연결될 때 이벤트를 처리하며, 이 때 socket 객체가 전달됩니다. => (서버에 접속한 모든 유저를 대상으로 하는 이벤트)
  • socket.on("eventName", ...): 클라이언트가 연결된 후, 각 개별 소켓에서 발생하는 특정 이벤트를 처리하는 코드입니다. => (하나의 유저를 대상으로 한 이벤트)

전체적인 흐름:

  1. 서버가 클라이언트의 연결을 io.on("connection")을 통해 감지합니다.
  2. 그 연결된 클라이언트에 대해 socket.on을 사용해 추가적인 이벤트를 처리할 수 있습니다. (예: 클라이언트의 메시지, 접속 종료 등)

'개발 > Node.js' 카테고리의 다른 글

[Node.js] 파라미터  (0) 2024.09.12
[Node.js] HTTP 상태 코드  (0) 2024.09.11
[Node.js] Raw Query  (1) 2024.09.11
[Node.js] 데이터베이스와 MongoDB  (0) 2024.09.05
[Node.js] Request 와 Response  (0) 2024.09.02