본문 바로가기

내일배움캠프 노드 4기/Today I Learned

socket.io 서버에 적용하기

모듈 설치하기

npm init -y
npm i socket.io -S
npm i express -S

express 앱 생성, http 모듈로 서버 생성

 

app.js

const express = require("express");
const { Server } = require("http");
const socketIo = require("socket.io");

const app = express();
const http = Server(app); // express app을 http 서버로 감싸기
const io = socketIo(http); // http 객체를 Socket.io 모듈에 넘겨 소켓 핸들러 생성

소켓 연결 이벤트 핸들링

io.on("connection", (sock) => {
  console.log("새로운 소켓이 연결됐어요!");

  sock.on("disconnect", () => {
    console.log("소켓 연결이 끊어졌어요");
  });
});

http 객체로 서버 열기

http.listen(8080, () => {
  console.log("서버가 요청을 받을 준비가 됐어요");
});

원래는 app.listen으로 서버를 열었는데 여기서는 http.listen으로 교체했다.(8080포트)

 

이벤트 핸들링 : 기존과 동일하게 emit 매개변수로 작동

sock.emit("eventServerHandling", {
  name:"sw",
  date: new Date().toISOString(),
});

소켓이 연결 될 때 이벤트로 name, date 데이터를 보내준다.

 

new Date() 함수 : 현재 시각을 생성해준다.

 

아래와 같이 다른 객체를 데이터로 보내줄 수 있다.

sock.on("BUY", (data) => {
    const emitData = {
      ...data,
      date: new Date().toISOString(),
    }
    io.emit("BUY_GOODS", emitData);
  });