이전 글에서 백엔드와 익며으이 각 브라우저가 서로 메세지를 WebSocket
을 통해 주고받는 것을 학습했습니다.
이 글에서는 각 브라우저가 닉네임을 가지고 실시간으로 채팅을 화면에 페인팅하며 메시지 주고 받는 것을 학습하겠습니다.
// ~/app.js
...(생략)
function handNickSubmit(event) {
event.preventDefault();
const input = nickForm.querySelector("input");
socket.send(makeMessage("nickname", input.value));
}
function handleMessageSubmit(event) {
event.preventDefault();
const input = messageForm.querySelector("input");
// console.log(input.value);
socket.send(makeMessage("new_message", input.value));
input.value = "";
}
nickForm.addEventListener("submit", handNickSubmit);
messageForm.addEventListener("submit", handleMessageSubmit);
// ~/server.js
...(생략)
socket.on("message", (msg) => {
const message = JSON.parse(msg);
//console.log(message, msg.toString());
switch (message.type) {
case "new_message":
sockets.forEach((aSocket) =>
aSocket.send(`${socket.nickname}: ${message.payload}`)
);
break;
case "nickname":
socket["nickname"] = message.payload;
break;
}
});
...(생략)
노마드코더 줌 클론코딩