반응형
socket.io 를 사용하기 위해서는
일단 프론트엔드 부분과 백엔드 부분이 연결이 되어 있어야 한다.
프론트엔드 부분에 나는 pug를 사용했는데
script로 연결이 필요하다.
여기 보면 script로 socket.io를 연결 해주었다.
그리고
index.js에서 연결된 socket.io를 사용할 수 있는데
사용법은 다음과 같다.

그냥 이렇게 하고 사용해주면 된다.
증말로다가 쉽다.
그러면 socket에다가 메시지를 보낼 수 있는데 방법은 다음과 같다.
만든 socket에 emit을 붙여주고 첫번째 arg는 그냥 어떤 종류의 메시지를 받았는지
구분하기 위한 고유 식별자 정도로 생각하면 된다.
그리고 2번째로 는 obj를 3번째는 fun을 보내주었는데
이게 무한대로 늘어나도 상관이 없다.
중요한 것은 fun은 무조건 마지막에 보내주어야 한다.
이제 백엔드에서 받아주어야 되는데
import http from "http";
import SocketIO from "socket.io";
import express from "express";
import { Buffer } from "buffer";
const app = express();
app.set("view engine", "pug");
app.set("views", __dirname + "/views");
app.use("/public", express.static(__dirname + "/public"));
app.get("/", (req, res) => res.render("home"));
app.get("/*", (req, res) => res.redirect("/"));
const handleListen = () => console.log(`Listening on http://localhost:3001`);
const server = http.createServer(app);
const io = SocketIO(server);
server.listen(3001, handleListen);
이런식으로 대충 서버를 만들어주고
SocketIO 안에 arg로 server를 넣어주면 된다.
good 그러면은
io를 통해 받아 프론트엔드에서 보낸 메세지를 받을 수 있는데
io.on("connection", (socket) => {
socket.on("enter_room", ({roomname}, done) => {
console.log(roomname)
done()
})
})
이런식으로 roomname을 받아올수 있고
done 함수를 받아온 것이다
여기서 특이한 것은 backend에서 done함수를 실행 되는 것이아니라
프론트엔드에서 done함수가 실행되게 되는 것이다.
반응형