Draw it์ ํ๋ฐํธ์๋์ Flutter๋ฅผ, ๋ฐฑ์๋ ๋๊ธฐํ์ Node.js + Express์ WebSocket์ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ๋ ์ค์๊ฐ ํ์
์บ๋ฒ์ค ์ ํ๋ฆฌ์ผ์ด์
์
๋๋ค. ์ด ์ฑ์ ํตํด ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๊ณต์ ๋ณด๋์ ๋์์ ๊ทธ๋ฆผ์ ๊ทธ๋ฆด ์ ์์ผ๋ฉฐ, ํฌ๋ก์ค ํ๋ซํผ UI ๊ฐ๋ฐ๊ณผ ์ค์๊ฐ ๋คํธ์ํฌ ํต์ ๋ชจ๋์ ๋ํ ์ ๋ฌธ์ฑ์ ์
์ฆํฉ๋๋ค.
๐ ์ฃผ์ ๋ชฉํ:
์ฑ๋ฅ์ด ๋ฐ์ด๋ ์ด๋ฒคํธ ๊ธฐ๋ฐ ์ํคํ
์ฒ๋ฅผ ์ฌ์ฉํ์ฌ ๊ณต์ ๋๋ก์ ๋ณด๋์์ ์ํํ ์ค์๊ฐ ํ์
์ ์ง์ํฉ๋๋ค.
๐งฑ ๊ธฐ์ ์คํ:
Flutter(Dart): ์ ์ค์ฒ ์ฒ๋ฆฌ ๋ฐ ์ปค์คํ
๋ ๋๋ง ๊ธฐ๋ฅ์ ๊ฐ์ถ ํฌ๋ก์ค ํ๋ซํผ ๋ชจ๋ฐ์ผ ํ๋ฐํธ์๋
Node.js + Express.js: ์ง์์ ์ธ ์๋ฐฉํฅ ํต์ ์ ์ํ WebSocket ์ง์ ๋ฐฑ์๋ ์๋ฒ
WebSocket(ws): ์ฌ์ฉ์ ๊ฐ ์คํธ๋กํฌ ์ค์๊ฐ ๋๊ธฐํ
CustomPainter: ์บ๋ฒ์ค์ ํ๋ ์ ๋จ์๋ก ํจ์จ์ ์ธ ๋๋ก์
Permission Handler ๋ฐ RepaintBoundary: ๋๋ก์์ ๊ธฐ๊ธฐ์ ์ด๋ฏธ์ง๋ก ์ ์ฅ
๐๏ธ ํต์ฌ ๊ธฐ๋ฅ:
โ๏ธ ๊ณต์ ์ค์๊ฐ ๋๋ก์: ๋ชจ๋ ์ฐธ์ฌ์๋ WebSocket ๋ธ๋ก๋์บ์คํธ๋ฅผ ํตํด ์๋ก์ ์คํธ๋กํฌ๋ฅผ ์ฆ์ ๋ณผ ์ ์์ต๋๋ค.
๐ก ์ํ ๋น์ ์ฅ WebSocket ์๋ฒ: ๊ฒฝ๋ Node.js ์๋ฒ๋ ํ์ฑ ์์ผ ์ฐ๊ฒฐ์ ์ ์งํ๊ณ ๋ฎ์ ์ง์ฐ ์๊ฐ์ผ๋ก ์คํธ๋กํฌ ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํฉ๋๋ค.
๐จ Canvas Engine: ํฐ์น ์ ์ค์ฒ๋ ๊ทธ๋ฆฌ๊ธฐ ๊ฐ๋ฅํ ๋ฒกํฐ ๊ฒฝ๋ก๋ก ๋ณํ๋๊ณ Flutter์ CustomPainter๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๋๋ง๋ฉ๋๋ค.
๐ ์บ๋ฒ์ค ๋ด๋ณด๋ด๊ธฐ: ์ฌ์ฉ์๋ ์์ ์ ์ํธ์ํฌ๋ฅผ ์ด๋ฏธ์ง๋ก ์ ์ฅํ ์ ์์ต๋๋ค.
๐ง ๋ชจ๋ํ ์ํคํ
์ฒ: ๊ทธ๋ฆฌ๊ธฐ ๋ก์ง, ์๋ฒ ์ด๋ฒคํธ ๋ฐ ํ๋ซํผ ํตํฉ์ ์ํ ๋ณ๋์ ๋ ์ด์ด๋ฅผ ์ ๊ณตํฉ๋๋ค.
์์ ๋กญ๊ฒ ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ์ธ์, ๋์ํ์ธ์, ์ฐฝ์ํ์ธ์ - ๋น์ ์ ์บ๋ฒ์ค, ๋น์ ์ ๊ท์น
์
๋ฐ์ดํธ ๋ ์ง
2025. 9. 28.