WebSocket
Socket.io
io.on("connection", (socket, callback) => {
// 서버에서 받음
socket.on("enter_room", (roomName, done) => {
// 방 만들기
socket.join(roomName);
// 클라에 있는 함수를 서버에서 호출하지만
// 실행은 클라이언트에서 실행됨
done();
// 채팅
socket.to(roomName).emit("welcome", socket.nickname, countRoom(roomName));
io.sockets.emit("room_change", publicRooms());
});
});
const socket = io();
// 채팅창 보여주기
function showRoom(msg) {
welcome.hidden = true;
room.hidden = false;
}
function handleSubmit(event) {
event.preventDefault();
const input = form.querySelector("input");
// 클라에서 보냄
socket.emit("enter_room", input.value, showRoom);
roomName = input.value;
input.value = "";
}
localhost:3000/ 로 들어왔는데 socket.io 서버가 바로 연결이 되는걸 확인 할 수 있었는데요, 이것이 Namespace라고 할 수 있습니다.
Namespace란게 같은 Namespace에 있는 소켓 끼리만 통신 하는 개념입니다.
그리고 Default-Namespace가 / 이기 때문에 socket.io로 연결되었습니다.
Room은 Namespace의 하위 개념입니다.(NameSpace -> Room -> Socket ) Namespace안에 있는 소켓들을 또 다시 Room으로 나눌 수 있습니다.