[Fullstack] ๊ณ ๊ฐ์ผํฐ ์ฑํ ๊ธฐ๋ฅ ๋ง๋ค๊ธฐ
์์ ์ ์ฝ๋ฉ์๋ ค์ฃผ๋๋๋์ ์ฑํ ์ฑ ๋ง๋ค๊ธฐ ์์์ ๋ณด๊ณ ์ด๋ฒ ํ๋ก์ ํธ์ ์ ์ฉํด๋ณด๊ณ ์ถ๋จ ์๊ฐ์,
2์ฃผ ๋ฐฐ์ด ๋ชจ์๋ ๋ฐฑ์๋ ์ค๋ ฅ์ด์ง๋ง... ์จ์ ํ ๊ธฐ๋ฅ์ ๋คํ์ง ๋ชปํด๋ ๊ฐ๋จํ ์ฑํ ์ฑ ๋ง๋ค๊ธฐ์ ๋์ ์ ํด๋ณด์๋ค!
[BackEnd]
HTTP
- ๋จ๋ฐฉํฅ(ํด๋ผ์ด์ธํธ ์์ฒญ์๋ง)
- ์ฐ๊ฒฐ ์ง์์ฑ โ
์น์์ผ
- ์๋ฐฉํฅ(๊ฐ์๋ํ๋ฅผ ์ํ ๋ ์์ฒญ ๊ฐ๋ฅ)
- ์ฐ๊ฒฐ ์ง์์ฑโญ๏ธ
๐๐ป ์น์์ผ์ผ๋ก ์ง์์ ์ธ ์ค์๊ฐ ์๋ฐฉํฅ ํต์ ์ ํ ์ ์๊ณ , ์๋ฒ๊ฐ ์๋ก์ด ๋ฉ์์ง๊ฐ ์์๋ ํด๋ผ์ด์ธํธ์๊ฒ ์ฆ์ ๋ฉ์์ง๋ฅผ ๋ณด๋ผ์์๋ค.
https://github.com/Yuiii0/chat-server
[FrontEnd]
ํ๋ก ํธ์์ socket ์ฐ๊ฒฐํ๊ธฐ
//server.js
import { io } from "socket.io-client";
const socket = io("http://localhost:5001"); //์ฐ๊ฒฐํ๊ณ ์ถ์ BE ์ฃผ์
export default socket;
socket ํต์ ํ๊ธฐ
socket.emit("login", userName, (res: SocketResponse) => {
if (res?.ok) {
setUser(res.data);
}
});
socket.on("message", (message) => {
setMessageList((prev) => [...prev, message]);
});
return () => {
socket.off("message");
};
์์ผ์ ํตํด, ์๋ฒ์ ๋ก๊ทธ์ธ ์์ฒญ์ ๋ณด๋ด๊ณ message๋ฅผ ๋ฆฌ์ค๋ํด์ messageList ๊ฐ์ ์ค์ ํด์ ๋ฉ์์ง๋ฅผ ๋์ด๋ค.
const sendMessage: FormEventHandler<HTMLFormElement> = (event) => {
event.preventDefault();
socket.emit("sendMessage", message, (res: SocketResponse) => {
console.log("sendMessageRds", res);
});
setMessage("");
};
emit์ ํตํด input์ฐฝ์ ์ ๋ ฅํ ๋ฉ์์ง๋ฅผ ๋ณด๋ธ๋ค.
ํด๋ผ์ด์ธํธ์ธก์์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ฉด, ์์คํ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋๋ก ๊ตฌํํ์๋ค.
๊ฐ์ ์ด ๋ง์ด ํ์ํ์ง๋ง, ์ฑํ ๊ธฐ๋ฅ์ ๊ตฌํํด๋ณด์๋ค๋ ์ ์ ์๋ฏธ๋ฅผ ๋๊ณ ์ถ๋ค ๐