
-> 서로 의사소통할 수 있는 Socket그룹이 필요함.
-> socketIO는 기본적으로 room을 제공하고, room에 참가하려면 backSocket.join(roomname)만
해주면 된다.
SocketIO documentation
-> 현재 backSocket이 속한 room을 알려준다.
-> 이벤트가 발생하면 실행될 리스너를 추가합니다.
ioServer.on("connection",(backSocket) => {
backSocket.onAny((event) => {
console.log(`Socket Event: ${event}`);
});//onAny
backSocket.on("enter_room", (roomname, done) => {
console.log(backSocket.id);//backSocket의 id
console.log(backSocket.rooms);//현재 내가 있는 room : 현재 내가 속한(기본적으로 들어가 있는) private room의 이름이 backSocket.id와 동일함을 알 수 있다.
backSocket.join(roomname);//설정한 room에 들어감
console.log(backSocket.rooms);//설정해준 roomname(app.js에서 object형식으로 보내줘서 object형식으로 들어간 것임.)
setTimeout(() =>{
done("hello from the backend");
}, 10000);
});
});

-> 방을 나갈 수 있음. 그렇게 되면 backSocket.room의 object에서 leave에 변수로 넣어준 room이 사라
짐.
-> 방 전체에 메시지를 보낼 수 있음. documentation BSK.to(room)

-> 방에 참가했을 때, html의 form을 숨기고 방을 보여줄 것임.
main
div#welcome
form
input(placeholder="room name", required, type="text")
button Enter Room
div#room
h3
ul
form
input(placeholder="message", required, type="text")
button Send
const welcome = document.getElementById("welcome");
const room = document.getElementById("room");
room.hidden = true;
let roomName; // 처음 roomName은 비어있음.
function showRoom(){
welcome.hidden = true;
room.hidden = false;
const h3 = room.querySelector("h3");
h3.innerText = `Room: ${roomName}`;//roomName 화면에 보여줌.
};
function handleRoomSubmit(event){
event.preventDefault();
const input = form.querySelector("input");
frontSocket.emit("enter_room", input.value, showRoom);
roomName = input.value;// roomName에 입력값 넣어주기
input.value = "";
};
ioServer.on("connection",(backSocket) => {
backSocket.onAny((event) => {
console.log(`Socket Event: ${event}`);
});
backSocket.on("enter_room", (roomName, showRoom) => {
backSocket.join(roomName);
showRoom();// backend에서 fn를 제어해줘서 frontend에서 실행되도록 함.
});
});