[React + socket] ๋ ๋๋ง๋ง๋ค socket.io ์ปค๋ฅ์ ์ด ์ฌ์์ฑ๋๋ ์ด์ ํด๊ฒฐ
socket์ ์ฌ์ฉํ ๋๋ง๋ค socket ๊ฐ์ฒด๋ฅผ ์ ์ญ์ ์ ์ธํด์ ์ฌ์ฉํด์ผ ํ ์ง ์ปดํฌ๋ํธ ๋ด์ ์ ์ธํด์ ์ง์ญ์ ์ผ๋ก ์ฌ์ฉํด์ผ ํ ์ง ํญ์ ๊ณ ๋ฏผ์ด์๋ค..
์ ์ญ์ผ๋ก ์ฌ์ฉํ๋ฉด ๋ฆฌ์กํธ์ ์ฑ์ ์ ์ ์, ๋ฐ๋ก ์์ผ์ ์ปค๋ฅ์ ๋๊ธฐ ๋๋ฌธ์ ๋๋ฌด ๋ถํธํ๋ค
๊ทธ๋ ๋ค๊ณ ์ง์ญ์ ์ผ๋ก ์ฌ์ฉํ๋ ค๋๊น ์ปค๋ฅ์ ์ด ๋ ๋๋ง๋ ๋๋ง๋ค ์์ฑ๋๊ธธ๋ ๋ ๋๋ง์ด ์์ฃผ ์ผ์ด๋๋ ์๋น์ค์ผ ๊ฒฝ์ฐ ๋ถํ๊ฐ ์ฌํ ๊ฒ์ด๊ณ , ์ค์ ๋ก WebRTC ํ์ ํ์ ๊ตฌํ์ ํ๋ฉด์ ์์ฒญ๋ ๋ ๊ณผ ๋ง์ฃผํ๋ค..
์๋๋ ๋ด๊ฐ ์ฒ์์ ์ ์ฉํ๋ ์์ผ ์ฝ๋๋ค.
function App() {
const socket = io(env.SERVER_PATH + `namespace`);
return (
<div>
// ์ด์ฉ๊ณ
</div>
);
}
export default App;
App ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง๋ ๋๋ง๋ค ์์ผ ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๊ฒ์ด๋ค.. ๋ด๊ฐ ๋ง๋ค๊ณ ์๋ ์ค์๊ฐ ์ฑ ์๋น์ค์์๋ ๋งค์ฐ ์น๋ช ์ ์ด์๋ค
๊ทธ๋์ ๋ด๋ฆฐ ๊ฒฐ๋ก useMemo๋ฅผ ์ฌ์ฉํ๊ธฐ!
function App() {
const socket = useMemo(() => io(env.SERVER_PATH + `namespace`), []);
return (
<div>
// ์ด์ฉ๊ณ
</div>
);
}
export default App;
์์ผ ๊ฐ์ฒด๋ฅผ ๋ฉ๋ชจ์ด์ ์ด์ ํด์ฃผ์ด์ ์์ผ์ด ์ฌ์์ฑ๋์ง ์๋๋ค
+ ์ถ๊ฐ๋ก, socket์ ์ ์ธ ํ ํ์ ์ปดํฌ๋ํธ์ props๋ก ๊น์ depth๋ก ๋๊ฒจ์ผ ๋๋ค๋ฉด props drilling์ด ์ผ๊ธฐ๋๊ณ , ์ด๋์ ์ ์ธ๋ ์์ผ์ธ์ง ํท๊ฐ๋ฆด ์ ์๋ค
์ด๋ด ๊ฒฝ์ฐ ์์ผ์ ์ ์ญ ์ํ๋ก ๊ด๋ฆฌํ์ฌ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ ์ข๋ค๊ณ ์๊ฐํ๋ค.