"박경위님... 그 곳에서 webRTC는 잘되고 있습니까...?"
const app = require("./app");
const http = require("http");
const server = http.createServer(app);
const io = require("socket.io")(server, {
cors: {
origin: "*",
// methods: ["GET", "POST"],
// allowedHeaders: ["my-custom-header"],
credentials: true,
},
});
// 어떤 방에 어떤 유저가 들어있는지
let users = {};
// socket.id기준으로 어떤 방에 들어있는지
let socketRoom = {};
const MAXIMUM = 2;
io.on("connection", (socket) => {
console.log(socket.id, "connection");
socket.on("join_room", (data) => {
console.log("join_room: ", data);
// 방이 기존에 생성되어 있다면
if (users[data.room]) {
console.log("27줄", users[data.room]);
// 현재 입장하려는 방에 있는 인원수
const currentRoomLength = users[data.room].length;
if (currentRoomLength === MAXIMUM) {
// 인원수가 꽉 찼다면 돌아갑니다.
socket.to(socket.id).emit("room_full");
return;
}
// 여분의 자리가 있다면 해당 방 배열에 추가해줍니다.
users[data.room] = [...users[data.room], { id: socket.id }];
} else {
// 방이 존재하지 않다면 값을 생성하고 추가해줍시다.
users[data.room] = [{ id: socket.id }];
}
socketRoom[socket.id] = data.room;
console.log("입장 !!!!", data.room);
// 입장
socket.join(data.room);
// 입장하기 전 해당 방의 다른 유저들이 있는지 확인하고
// 다른 유저가 있었다면 offer-answer을 위해 알려줍니다.
const others = users[data.room].filter((user) => user.id !== socket.id);
if (others.length) {
io.sockets.to(socket.id).emit("all_users", others);
}
});
socket.on("offer", (sdp, roomName) => {
console.log("offer: ", sdp);
console.log("offer: ", roomName);
// offer를 전달받고 다른 유저들에게 전달해 줍니다.
socket.to(roomName).emit("getOffer", sdp);
console.log("61번째줄 성공");
});
socket.on("answer", (sdp, roomName) => {
console.log("answer: ", sdp);
console.log("answer: ", roomName);
// answer를 전달받고 방의 다른 유저들에게 전달해 줍니다.
socket.to(roomName).emit("getAnswer", sdp);
console.log("70번째줄 성공!");
});
socket.on("candidate", (candidate, roomName) => {
console.log("candidate :", candidate);
console.log("candidate :", roomName);
// candidate를 전달받고 방의 다른 유저들에게 전달해 줍니다.
socket.to(roomName).emit("getCandidate", candidate);
console.log("78번째줄 성공!");
});
});
module.exports = { server };
app.js
const express = require("express");
const app = express();
const cors = require("cors");
const connect = require("./models/index");
connect();
const expiration = require("./schedule/schedule");
const roomName = require("./socket");
const morganMiddleware = require("./middleware/morgan_middleware");
const routes = require("./routes/index.routes");
app.use(express.json());
// app.use(
// cors({
// origin: "*",
// })
// );
app.use(cors());
app.use(morganMiddleware);
// scheduler 실행
expiration;
app.use("/", routes);
module.exports = app;
위 코드를 보면 app.use(cors{origin: "*", }) );
부분이 있을거다. socket.js 파일에서 cors: origin: "*" 가 들어가기 때문에 혹시 몰라서 app.use(cors()); 변경해주니까 갑자기 너무 잘되는 거 아니겠는가?!
하지만 젠장... 시간이 얼마 지나니 또 answer 까지만 대답한다... 이렇게 말이다...
진짜 눈물광광이다... 시도를 이것저것 해보고 있지만... 아직까지는... 잘 모르겠어.... 좀 더 고민하면서 프론트 분들이랑 소통하면서 해봐야겠다...