๐กWebSocket
โ
WebSocket์ด๋?
WebSocket์ด๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ง์์ ์ธ ์ฐ๊ฒฐ์ ์ ์งํ๊ณ ์๋ฐฉํฅ ํ ์ธ์ด ๊ฐ๋ฅํ ํ๋กํ ์ฝ์ ๋ปํ๋ค.
์์ฒญ-์๋ต ๋ชจ๋ธ์ ์ฌ์ฉํ๋ ๊ธฐ์กด http์ ๋ฌ๋ฆฌ ์น์์ผ์ ์๋ก์ด์ฐ๊ฒฐ์ ๋ฐ๋ณต์ ์ผ๋ก ์ค์ ํ์ง ์๊ณ ๋ ์ง์์ ์ผ๋ก ์๋ฐฉํฅ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ ์งํ๊ฒ ๋๋ค.
์ฑํ
, ์จ๋ผ์ธ, ์ฃผ์์์ธ ๋ฑ์ ์์๋ก ๋ค ์ ์๋ค.

์น์์ผ๋ ์๋ฒ ๊ฐ์ ์ฐ๊ฒฐ์ ํ๊ธฐ ์ํด์๋ ์ต์ด์ ํ๋ฒ์ http ์์ฒญ์ ๋ณด๋ธ๋ค.

โ
์คํ๋ง์์ ์น์์ผ์ ์ฌ์ฉํ๋ ๋ํ์ ์ธ ๋๊ฐ์ง
1. Spring WebSocket
- ์ฐ๊ฒฐ๋ง ์ ๊ณตํ๊ณ ํธ๋ค๋ฌ๋ ์ง์ ๊ตฌํํด์ผ ํ๋ค.
- ๋จ์ ๋ฌธ์์ด(ํ
์คํธ/๋ฐ์ด๋๋ฆฌ)๋ง ์ฃผ๊ณ ๋ฐ๊ธฐ ๋๋ฌธ์ ์์ ์น์์ผ์ด ๋ ๊ฐ๋ณ๋ค


2. Spring WebSocket + STOMP
- STOMP(Simple Text Oriented Messaging Protocol) : ํ
์คํธ ๊ธฐ๋ฐ์ ๋ฉ์์ง ์ ์ก ํ๋กํ ์ฝ
- ํน์ง : ์ฑํ
๋ฐฉ(์ฑ๋) ๊ตฌ๋ถ, ๊ตฌ๋
/๋ฐํ, ๋ฉ์์ง ๋ผ์ฐํ
์ STOMP์์ ์๋ ์ฒ๋ฆฌ
- WebSocket ์์์ ๋์ํ๋ ๋ฉ์์ง ํ๋กํ ์ฝ. ๋ฉ์์ง๋ฅผ ์ด๋ป๊ฒ ์ฃผ๊ณ ๋ฐ์์ง์ ๊ท์น์ด ์ ํด์ ธ ์๋ค.

2-1. STOMP๊ฐ ํด์ฃผ๋ ์ผ
- ๋ฉ์์ง ๋ชฉ์ ์ง(/topic/chat/room1, /queue/alert ๋ฑ)๋ฅผ ํค๋์ ๋ช
์
-> ์ด๋๋ก ๋ผ์ฐํ
ํด์ผ ํ ์ง ์๋ฒ๊ฐ ์ฝ๊ฒ ํ์
- SUBSCRIBE, UNSUBSCRIBE, SEND ๋ฑ ๋ช
๋ น์ด๋ก ๊ตฌ๋ถ
-> ํด๋ผ์ด์ธํธ๊ฐ "๊ตฌ๋
๋ง", "๋ฉ์์ง๋ง ๋ณด๋ด๊ธฐ", "ํด์ " ๋ฑ ์ญํ ๋ถ๋ฆฌ
- ํค๋/๋ฐ๋ ๋ถ๋ฆฌ
-> ์ธ์ฆ, ํ์
, ์ฐ์ ์์ ๋ฑ ๋ถ๊ฐ ์ ๋ณด(ํค๋)์ ์ถ๊ฐ๊ฐ๋ฅ
- ๋ธ๋ก์ปค๊ฐ ๊ฐ ์ฑ๋ ๊ตฌ๋
์์๊ฒ๋ง ์๋์ผ๋ก ๋ฉ์์ง ๋ถ๋ฐฐ
2-2. STOMP ๋ฉ์์ง ๊ตฌ์กฐ

2-3. STOMP๋ฅผ ๋ง์ด ์ฐ๋ ์ด์
- ์์ฐ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ
- ์ฑํ
๋ฐฉ, ์๋ฆผ, ๊ตฌ๋
/์ทจ์, ๋ธ๋ก๋์บ์คํธ ๋ฑ์ ๊ธฐ๋ฅ์ ๋ค ๋ด์ฅํ๊ณ ์์
- ์ฝ๋๊ฐ ๊ฐ๊ฒฐํ๊ณ ์ค์ ๊ฐ๋ฅ์ฑ์ด ์ ์
- ์ธ์
๊ด๋ฆฌ, ์ฑํ
๋ฐฉ ๊ด๋ฆฌ, ์ฌ์ฉ์ ๋งคํ, ๋ชฉ์ ์ง ๋ผ์ฐํ
๋ฑ์ ๋ค ์ฝ๋๋ก ์ง์ ๊ตฌํํ๊ฒ ๋๋ฉด ํ
์คํธ/์ ์ง๋ณด์/ํ์
์ ๋ฌธ์ ๋ฐ์
- ํ์ฅ์ฑ/๋ณ๊ฒฝ ์ฉ์ด
- 1:1 ์ฑํ
๋ฐฉ, 1:N ๊ทธ๋ฃน๋ฐฉ, ํ ํฝ๋ณ ์๋ฆผ ๋ฑ์ STOMP๋ ๊ฒฝ๋ก๋ง ๋ฐ๊พธ๋ฉด ์ ์ฉ ๊ฐ๋ฅ
- ์์ ์น์์ผ์ ๋ด๋ถ ์ฝ๋ ๊ตฌ์กฐ๋ ์ ๋ถ ๋ณ๊ฒฝํด์ผํจ.
2-4. ๊ทธ๋๋ ์์ WebSocket์ ์จ์ผํ๋ ์ํฉ์?
-
์ด๊ณ ์ฑ๋ฅ/์ด๊ฒฝ๋ ํต์ ์ด ํ์ํ ๋
->๊ฒ์์๋ฒ,์ด์ ์ง์ฐ ์ค์๊ฐ ์๋น์ค
->ms ๋จ์์ ๋ ์ดํด์๊ฐ ์ค์ํ ์ํฉ
->์ต๋ํ "๊ฐ๊ณต"์ ์์ ๊ณ ํจํท ํฌ๊ธฐ๋ฅผ ์ต์ํํ๊ณ ์ถ์ ๋
(STOMP๋ ํ
์คํธ ๊ธฐ๋ฐ ํ๋ ์, ํค๋ ๋ฑ ์ค๋ฒํค๋๊ฐ ์กฐ๊ธ์ด๋ผ๋ ์์)
-
๋ฉ์์ง ๊ตฌ์กฐ๋ฅผ ์ง์ ์ปค์คํ
ํด์ผ ํ ๋
->์ฌ๋ด ์ ์ฉ ๋ฉ์์ง ํฌ๋งท, ์ํฐํ๋ผ์ด์ฆ ํ์ค, ๋ฐ์ด๋๋ฆฌ ์ ์ฉ ๋ฑ
-
์์ฃผ ๋จ์ํ ์๋น์ค
->์ฑ๋/๊ตฌ๋
/๋ฐฉ ๊ธฐ๋ฅ์ด ํ์ ์๋ ๊ฒฝ์ฐ
->๊ฐ๋จํ ํ
์คํธ์ฉ ๋ฐ๋ชจ ์๋ฒ ๋ฑ
โ
์์ WebSocket VS STOMP WebSocket
