1. 기본 사용 구조

- 서버 측

js
io.on("connection", (socket) => {
  // 클라이언트가 연결되면 실행됨
  console.log("클라이언트 연결됨:", socket.id);

  // 이벤트 수신
  socket.on("이벤트명", (data) => {
    // 처리 로직
  });

  // 이벤트 전송
  socket.emit("이벤트명", payload);
})

- 클라이언트

js
const socket = io("<http://localhost:3000>");

// 서버로 이벤트 전송
socket.emit("join-room", roomId);

// 서버에서 이벤트 수신
socket.on("game-event", (data) => {
  console.log("서버에서 받은 이벤트:", data);
});

2. 주요 메서드 정리

메서드 설명
socket.on(event, cb) 클라이언트/서버에서 특정 이벤트 수신
socket.emit(event, data) 이벤트 전송 (자기 자신 포함)
socket.to(roomId).emit(...) 특정 방의 다른 클라이언트들에게 메시지 전송
socket.join(roomId) 클라이언트를 특정 방에 조인
socket.leave(roomId) 클라이언트를 방에서 나가게 함

3. 실제 프로젝트 구조

항목 내용
Runtime Node.js
Realtime Socket.IO
DB Firebase Firestore
배포 AWS EC2

4. 코드 리뷰

1. 서버 초기화 및 소켓 연결

Socket.IO 서버를 초기화하고, CORS를 허용한 상태로 클라이언트 연결을 대기

js
const io = new Server(httpServer, {
  cors: { origin: "*" }
});

io.on("connection", (socket) => {
  console.log("클라이언트 연결됨:", socket.id);
});

2. 방 입장 처리 (join-room)

클라이언트가 특정 방에 입장하면 socket.join(roomId)를 통해 방에 참여시킴.