nodejs

socketio 기본적인 사용법

직장인코딩 2022. 10. 17. 15:41
반응형

 

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함수가 실행되게 되는 것이다.

 

 

 

반응형