๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐Ÿ–ฅ dev-ruby

[React + socket] ๋ Œ๋”๋ง๋งˆ๋‹ค socket.io ์ปค๋„ฅ์…˜์ด ์žฌ์ƒ์„ฑ๋˜๋Š” ์ด์Šˆ ํ•ด๊ฒฐ ๋ณธ๋ฌธ

React

[React + socket] ๋ Œ๋”๋ง๋งˆ๋‹ค socket.io ์ปค๋„ฅ์…˜์ด ์žฌ์ƒ์„ฑ๋˜๋Š” ์ด์Šˆ ํ•ด๊ฒฐ

ruby_s 2022. 12. 5. 18:50
728x90
๋ฐ˜์‘ํ˜•
SMALL

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์ด ์•ผ๊ธฐ๋˜๊ณ , ์–ด๋””์„œ ์„ ์–ธ๋œ ์†Œ์ผ“์ธ์ง€ ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ๋‹ค
์ด๋Ÿด ๊ฒฝ์šฐ ์†Œ์ผ“์„ ์ „์—ญ ์ƒํƒœ๋กœ ๊ด€๋ฆฌํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•
LIST