๊ฐ์
์ค์๊ฐ ์ฑํ ์๋น์ค๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ์ ์ ํ ๊ธฐ์ ์คํ์ ๊ณ ๋ฏผํ๋ ์ค, ๊ธฐ์กด HTTP ํต์ ์ด ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ํด ์๋ฒ๊ฐ ์๋ตํ๋ ๋จ๋ฐฉํฅ ๋ชจ๋ธ์ด๋ผ๋ ํ๊ณ๋ฅผ ๋๊ผ๋ค. ์ฑํ ์ ์ฌ์ฉ์ ๊ฐ ์ง์์ ์ด๊ณ ์๋ฐฉํฅ์ผ๋ก ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ์์ผ ํ๋ฏ๋ก, ๋ณด๋ค ์ค์๊ฐ์ฑ์ ๋ณด์ฅํ ์ ์๋ ํต์ ๋ฐฉ์์ด ํ์ํ๋ค.
์ด๋ฌํ ์๊ตฌ์ฌํญ์ ์ถฉ์กฑํ๊ธฐ ์ํด ์น์์ผ์ ๋์ ํ๊ฒ ๋์๊ณ , ์น์์ผ์ ํ ๋ฒ์ ์ฐ๊ฒฐ๋ก ์ง์์ ์ธ ์๋ฐฉํฅ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํ์ฌ, ์ฑํ ๊ณผ ๊ฐ์ ์ค์๊ฐ ์๋น์ค์ ์ ํฉํ๋ค๊ณ ํ๋จํ๋ค. ๋น์ ์ ํ๋ ํ๋ก์ ํธ ๊ธฐ๊ฐ์ผ๋ก ์ธํด ์ด๋ก ์ ์ธ ๋ถ๋ถ์ ๊ฐ๋ตํ๊ฒ ํ์ ํ๊ณ ๊ตฌํํ์ง๋ง, ๋ณด๋ค ๊น์ ์ดํด๊ฐ ํ์ํ๋ค๊ณ ๋๊ปด ์ด๋ฒ ๊ธฐํ์ ์น์์ผ์ ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ๋์ ์๋ฆฌ์ ๋ํด ์ฒด๊ณ์ ์ผ๋ก ํ์ตํ๊ณ ์ ํ๋ค.
HTTP์ ํ๊ณ์ ์น์์ผ ๋ฑ์ฅ
๊ธฐ์กด HTTP ํ๋กํ ์ฝ์ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ๋ณด๋ด๋ฉด ์๋ฒ๊ฐ ์๋ต์ ๋ฐํํ๋ ์์ฒญ-์๋ต ๋ชจ๋ธ์ ๋ฐ๋ฅธ๋ค.
์ด ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ ํ๊ณ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
๏น ์ค์๊ฐ์ฑ ๋ถ์กฑ: ๋งค ์์ฒญ๋ง๋ค ์๋ก์ด ์ฐ๊ฒฐ์ ๋งบ๊ณ ํด์ ํ๊ธฐ ๋๋ฌธ์, ์๋ฒ์์ ์ฆ์ ๋ฐ์ดํฐ๋ฅผ ํธ์ํ๊ธฐ ์ด๋ ต๋ค.
๏น ์ค๋ฒํค๋ ๋ฐ์: ์ค์๊ฐ ๋ฐ์ดํฐ๊ฐ ํ์ํ๋ฉด ํด๋ผ์ด์ธํธ๋ ์งง์ ์ฃผ๊ธฐ๋ก ํด๋ง ๋๋ ๋กฑ ํด๋ง์ ์๋ํ์ฌ ๋คํธ์ํฌ์ ์๋ฒ ์์์ ๋ญ๋นํ๋ค.
์น์์ผ์ ํ์์ฑ
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ ๋จ ํ ๋ฒ์ ์ฐ๊ฒฐ๋ก ์ง์์ ์ธ ์๋ฐฉํฅ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ธฐ์ ์ด ํ์ํ๋ค.
๊ทธ ๊ฒฐ๊ณผ ๋ฑ์ฅํ ๊ธฐ์ ์ด ๋ฐ๋ก ์น์์ผ์ด๋ค.
์น์์ผ์ HTML5์ ๋์ ๋ ํต์ ํ๋กํ ์ฝ๋ก, TCP ๊ธฐ๋ฐ์ผ๋ก ๋์ํ์ฌ ์ ๋ขฐ์ฑ ์๋ ๋ฐ์ดํฐ ์ ์ก์ ๋ณด์ฅํ๋ค.
์ด๊ธฐ ์ฐ๊ฒฐ์ HTTP ์์ฒญ-์๋ต์ผ๋ก ์์ํ๋, ์ฐ๊ฒฐ์ด ์ ๊ทธ๋ ์ด๋(Upgrade)๋ ํ์๋ ์ง์์ ์ธ ์๋ฐฉํฅ ํต์ ์ฑ๋์ ์ ์งํ๋ค.
์น์์ผ์ ์ฅ์
๏น ์๋ฐฉํฅ ํต์ : ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ๋์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์์ด ์ค์๊ฐ ์ํธ์์ฉ์ ์ ํฉํ๋ค.
๏น ๋ฎ์ ์ค๋ฒํค๋: ํ ๋ฒ ์ฐ๊ฒฐ์ ๋งบ์ผ๋ฉด ์ ์ง๋๋ฏ๋ก, ๋งค๋ฒ ์๋ก์ด ์ฐ๊ฒฐ์ ์ค์ ํ๋ ๋น์ฉ์ด ์ค์ด๋ ๋ค.
๏น ๋น ๋ฅธ ์๋ต์ฑ: ๋ฐ์ดํฐ๊ฐ ์ฆ์ ์ ๋ฌ๋์ด ์ฑํ , ๊ฒ์, ๋ชจ๋ํฐ๋ง ๋ฑ ์ค์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ํจ์จ์ ์ด๋ค.
์น์์ผ ํธ๋์ ฐ์ดํฌ ๊ณผ์
์น์์ผ ์ฐ๊ฒฐ์ ๋ค์๊ณผ ๊ฐ์ ํธ๋์ ฐ์ดํฌ ๊ณผ์ ์ ํตํด ์ด๋ฃจ์ด์ง๋ค.
1. ํด๋ผ์ด์ธํธ ์์ฒญ (HTTP GET + ์ ๊ทธ๋ ์ด๋ ํค๋)
๏น ํด๋ผ์ด์ธํธ๋ HTTP GET ์์ฒญ๊ณผ ํจ๊ป Upgrade: websocket, Connection: Upgrade, Sec-WebSocket-Key, Sec-WebSocket-Version ๋ฑ์ ํค๋๋ฅผ ์ฒจ๋ถํด ์น์์ผ ์ฐ๊ฒฐ์ ์์ฒญํ๋ค.
2. ์๋ฒ ์๋ต (HTTP 101 Switching Protocols)
๏น ์๋ฒ๋ ์์ฒญ์ ํ์ธํ๊ณ , ์น์์ผ ์ฐ๊ฒฐ์ ์น์ธํ ๊ฒฝ์ฐ HTTP/1.1 101 Switching Protocols ์ํ ์ฝ๋๋ก ์๋ตํ๋ค.
๏น ์๋ฒ๋ Upgrade: websocket, Connection: Upgrade, Sec-WebSocket-Accept ๋ฑ์ ํค๋๋ก ์์ฒญ์ ์ ํจ์ฑ์ ํ์ธํ๋ค.
3. ํธ๋์ ฐ์ดํฌ ์๋ฃ ๋ฐ ์ฐ๊ฒฐ ์ ๊ทธ๋ ์ด๋
๏น ํด๋ผ์ด์ธํธ๋ ์๋ฒ ์๋ต์ ์์ ํ๋ฉด ์น์์ผ ์ฐ๊ฒฐ๋ก ์ ํ๋์ด ์ง์์ ์ธ ์๋ฐฉํฅ ํต์ ์ด ๊ฐ๋ฅํด์ง๋ค.
๏น ํ ์คํธ ๋๋ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ ์ ์ก์ด ๊ฐ๋ฅํ๋ฉฐ, Ping / Pong ํ๋ ์์ ํตํด ์ฐ๊ฒฐ ์ํ๋ฅผ ํ์ธํ ์ ์๋ค.
ํด๋ผ์ด์ธํธ ์์ฒญ ํจํท & ์๋ฒ ์๋ต ํจํท
ํธ๋์ ฐ์ดํฌ๊ฐ ์ ์์ ์ผ๋ก ์๋ฃ๋๋ฉด,
HTTP ์์ฒญ-์๋ต ๊ธฐ๋ฐ์ ๋จ๋ฐฉํฅ ํต์ ๋ชจ๋ธ์์ ์น์์ผ ๊ธฐ๋ฐ์ ์๋ฐฉํฅ ํต์ ๋ชจ๋ธ๋ก ์ ๊ทธ๋ ์ด๋๋์ด ์ง์์ ์ธ ์ฐ๊ฒฐ์ด ์ ์ง๋๋ค.
์น์์ผ์ ํ๊ณ์ ๊ณ ๋ ค ์ฌํญ
1. ๋ณด์
๏น ๊ธฐ๋ณธ์ ์ผ๋ก TCP ๊ธฐ๋ฐ ํต์ ์ด๋ฏ๋ก, TLS๊ฐ ์ ์ฉ๋์ง ์์ผ๋ฉด ์ํธํ๊ฐ ๋์ง ์์ ๋ณด์์ ์ทจ์ฝํ ์ ์๋ค.
๏น ๋ฏผ๊ฐํ ๋ฐ์ดํฐ ์ ์ก ์ “wss://”๋ฅผ ํตํด ์ํธํ๋ ์ฑ๋์ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ถ์ฅ๋๋ค.
2. ๋ฐฉํ๋ฒฝ ๋ฐ ํ๋ก์ ์ด์
๏น ์ผ๋ถ ๋คํธ์ํฌ ํ๊ฒฝ(๋ฐฉํ๋ฒฝ ํน์ ํ๋ก์ ์๋ฒ)์์ ์น์์ผ ํธ๋ํฝ์ ์ฐจ๋จํ๊ฑฐ๋ ๋ณํํ๋ฉด ์ฐ๊ฒฐ์ด ๋ถ์์ ํด์ง ์ ์๋ค.
3. ์ฐ๊ฒฐ ์ ์ง ๋น์ฉ
๏น ์น์์ผ์ ์ฐ๊ฒฐ์ ์ง์์ ์ผ๋ก ์ ์งํ๋ฏ๋ก, ํด๋ผ์ด์ธํธ๊ฐ ๋ง์ ๊ฒฝ์ฐ ์๋ฒ ์์ ๊ด๋ฆฌ๊ฐ ์ค์ํ๋ค.
๏น Ping / Pong ํ๋ ์์ผ๋ก ์ฐ๊ฒฐ ์ํ๋ฅผ ํ์ธํ๊ณ , ํ์์ ์ฌ์ฐ๊ฒฐ ๋ก์ง์ ๊ตฌํํด์ผ ํ๋ค.
4. ๋ณต์ก์ฑ ์ฆ๊ฐ
๏น HTTP์ ๋ฌ๋ฆฌ ์ํ๋ฅผ ์ ์งํ๋ ์ฐ๊ฒฐ์ด๋ฏ๋ก, ์ฐ๊ฒฐ ํด์ , ์ฌ์ฐ๊ฒฐ, ๊ทธ๋ฆฌ๊ณ ์์ธ ์ฒ๋ฆฌ๋ฅผ ์ํ ์ถ๊ฐ ๋ก์ง์ด ํ์ํ๋ค.
'TECH STACK REVIEW > ๐ฌ WEB SOCKET' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
STOMP์ ์น์์ผ์ ํ์ฉํ ์ค์๊ฐ ๋ฉ์์ง (0) | 2025.03.06 |
---|