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", ...): 클라이언트가 연결된 후, 각 개별 소켓에서 발생하는 특정 이벤트를 처리하는 코드입니다. => (하나의 유저를 대상으로 한 이벤트)
전체적인 흐름:
- 서버가 클라이언트의 연결을 io.on("connection")을 통해 감지합니다.
- 그 연결된 클라이언트에 대해 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 |