๐๐ํน์ง
WebSocket์ ํ๋์ URL์ ํตํด Connection์ด ๋งบ์ด์ง๊ณ , ํ์๋ ํด๋น Connection์ผ๋ก๋ง ํต์ ํ๋ค.
WebSocket์ Connection์ ์ ์งํ๊ณ ์์ผ๋ฏ๋ก, ๊ฐ์ฉ Port ์๋งํผ์ Client์ ํต์ ํ ์ ์๋ค.
์น์์ผ์ ๋จ์ผ ํฌํธ๋ฅผ ํตํด ์ฌ๋ฌ ํด๋ผ์ด์ธํธ์ ๋์์ ์๋ฐฉํฅ ํต์ ์ ํ ์ ์๋ ํ๋กํ ์ฝ์ด๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๋ค์ค ์ฌ์ฉ์ ํ๊ฒฝ์์ ์ค์๊ฐ์ผ๋ก ๋ํ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค.
์น์์ผ ๋ง์ ์ด์ฉํ๋ค๋ฉด
Websocket์ ๋ฉ์์ง ๋ฐฉ์๋ง ์ ์ ์ํ๋ค๋ฉด ์ข์ Server/Client ์์ผ ์๋ฒ๋ฅผ ์์ฑํ ์ ์๋ค.
ํ์ง๋ง, ๋จ์ํ ํต์ ๊ตฌ์กฐ๋ก ์ธํด WebSocket๋ง์ ์ด์ฉํด ์์ผ์๋ฒ๋ฅผ ๊ตฌํํ๋ฉด ํด๋น ๋ฉ์ธ์ง๊ฐ ์ด๋ค ์์ฒญ์ธ์ง, ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผ ํ๋์ง์ ๋ฐ๋ผ ์ฑํ ๋ฐฉ๊ณผ ์ธ์ ์ ์ผ์ผ์ด ๊ตฌํํ๊ณ ๋ฉ์ธ์ง ๋ฐ์ก ๋ถ๋ถ์ ๊ด๋ฆฌํ๋ ์ถ๊ฐ ์ฝ๋๋ฅผ ๊ตฌํํด์ฃผ์ด์ผ ํ๋ค.
๐๐ํน์ง
๊ฐ๋จํ ๋ฉ์์ง๋ฅผ ์ ์กํ๊ธฐ ์ํ ํ๋กํ ์ฝ์ด๋ค. ํ ์คํธ ๊ธฐ๋ฐ ๋ฉ์์ง ํ๋กํ ์ฝ์ด๋ผ ๋ถ๋ฅธ๋ค.
๋ฉ์์ง์ ๋ฐํ์์ ๊ตฌ๋ ์๊ฐ ์กด์ฌํ๋ค. ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ์ฌ๋๊ณผ ๋ฐ๋ ์ฌ๋์ด ๊ตฌ๋ถ๋๋ค.
์ฑํ ๋ฐฉ ์์ฑ : pub / sub ๊ตฌํ์ ์ํ Topic์ด ์์ฑ๋จ
์ฑํ ๋ฐฉ ์ ์ฅ : Topic ๊ตฌ๋
์ฑํ ๋ฐฉ์์ ๋ฉ์ธ์ง๋ฅผ ์ก์์ : ํด๋น Topic์ผ๋ก ๋ฉ์ธ์ง๋ฅผ ์ก์ (pub), ๋ฉ์ธ์ง๋ฅผ ์์ (sub)
์ธ์ด-์ค๋ฆฝ์ ์ด๋ค. ๋ค์ํ ์ธ์ด๋ก ์์ฑ๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ์ ๋ฉ์์ง๋ฅผ ๊ตํํ ์ ์๊ฒ ํ๋ค.
ํ๋ ์ ๊ธฐ๋ฐ์ด๋ค.
COMMAND
header1:value1
header2:value2
Body^@
---------------------------------------------------------------------------------------------------
COMMAND : SEND, SUBSCRIBE๋ฅผ ์ง์ํ ์ ์๋ค.
header : ๊ธฐ์กด์ WebSocket์ผ๋ก๋ ํํ์ด ๋ถ๊ฐ๋ฅํ header๋ฅผ ์์ฑํ ์ ์๋ค.
destination : ์ด ํค๋๋ก ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ด๊ฑฐ๋(SEND), ๊ตฌ๋
(SUBSCRIBE)ํ ์ ์๋ค
SUBSCRIBE
SUBSCRIBE frame์ ์ฃผ์ด์ง destination์ ๋ฑ๋กํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค. SEND frame๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก Subscribe๋ client๊ฐ ๊ตฌ๋
ํ๊ธฐ ์ํ๋ ๋ชฉ์ ์ง๋ฅผ ๊ฐ๋ฆฌํค๋ "destination" ํค๋๋ฅผ ํ์๋ก ํ๋ค. ๊ฐ์
๋ ๋์์์ ์์ ๋ ๋ชจ๋ ๋ฉ์ธ์ง๋ ์ดํ MESSAGE frame๋ก์ ์๋ฒ์์ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ๋๋ค.
Subscribe frame์ ์ฃผ์ด์ง destination์ ๋ฑ๋กํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค. subscribe๋ ๊ตฌ๋ ํ๊ธฐ ์ํ๋ ๋ชฉ์ ์ง๋ฅผ ๊ฐ๋ฆฌํค๋ "destination" ํค๋๋ฅผ ํ์๋ก ํ๋ค. ๊ฐ์ ๋ ๋์์์ ์์ ๋ ๋ชจ๋ ๋ฉ์ธ์ง๋ ์ดํ MESSAGE frame๋ก์ ์๋ฒ์์ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌ๋๋ค.
id: 0
destination: /queue/foo
ack: client
^@
๋จ์ผ ์ฐ๊ฒฐ์ ์ฌ๋ฌ ๊ฐ์ ๊ตฌ๋ ์ ํ ์ ์์ผ๋ฏ๋ก ๊ตฌ๋ ID๋ฅผ ๊ณ ์ ํ๊ฒ ์๋ณํ๊ธฐ ์ํด "id"ํค๋๊ฐ ํ๋ ์์ ํฌํจ๋์ด์ผ ํ๋ค.
์ถ์ฒ :
https://velog.io/@hoyun7443/WebSocket%EC%9D%98-Stomp
https://growth-coder.tistory.com/157
https://supawer0728.github.io/2018/03/30/spring-websocket/