- Spring Boot v2.5.9
- Spring WebSocket
chatting-server: ์ฌ๋ฌ๊ฐ์ ์ฑํ ๋ฐฉ ์๋ฒchatting-basic: ํ๋์ ์ฑํ ๋ฐฉ ์ผ๊ด ์๋ฒ
Web Browser์์ Request๋ฅผ ๋ณด๋ด๋ฉด Server๋ Response๋ฅผ ์ค๋๋ค.
HTTP ํต์ ์ ๊ธฐ๋ณธ์ ์ธ ๋์ ๋ฐฉ์์ ๋๋ค.
ํ์ง๋ง Server์์ Client๋ก ํน์ ๋์์ ์๋ ค์ผ ํ๋ ์ํฉ๋ ์๋ค.
์๋ฅผ ๋ค์ด Browser๋ก Facebook์ ์ ์ํด ์๋ค๊ฐ ๋๊ตฐ๊ฐ ์น๊ตฌ๊ฐ ๊ธ์ ๋ฑ๋กํ๋ ๊ฒฝ์ฐ, ํน์ Web Browser๋ก ๋ฉ์ ์ ๋ฅผ ๊ตฌํํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
WebSocket์ด๋ Transport protocol์ ์ผ์ข ์ผ๋ก ์ฝ๊ฒ ์ด์ผ๊ธฐํ๋ฉด ์น๋ฒ์ ์ TCP ๋๋ Socket์ด๋ผ๊ณ ์ดํดํ๋ฉด ๋ฉ๋๋ค.
WebSocket์ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ Socket Connection์ ์ ์งํด์ ์ธ์ ๋ ์๋ฐฉํฅ ํต์ ๋๋ ๋ฐ์ดํฐ ์ ์ก์ด ๊ฐ๋ฅํ๋๋ก ํ๋ ๊ธฐ์ ์ ๋๋ค. ์ฃผ๋ก
Real-time web application๊ตฌํ์ ์ํด ๋๋ฆฌ ์ฌ์ฉ๋์ด์ง๊ณ ์์ต๋๋ค. (SNS ์ ํ๋ฆฌ์ผ์ด์ , LoL ๊ฐ์ ๋ฉํฐํ๋ ์ด์ด ๊ฒ์, ๊ตฌ๊ธ Doc, ์ฆ๊ถ๊ฑฐ๋, ํ์์ฑํ ๋ฑ)
HTTP์์ ๋์ํ๋, ๊ทธ ๋ฐฉ์์ด HTTP์๋ ๋ง์ด ์์ดํ๋ค.
- REST ํ ๋ฐฉ์์ HTTP ํต์ ์์๋ ๋ง์ URI๋ฅผ ํตํด application์ด ์ค๊ณ๋๋ค.
- WebSocket์ ํ๋์ URL์ ํตํด Connection์ด ๋งบ์ด์ง๊ณ , ํ์๋ ํด๋น Connection์ผ๋ก๋ง ํต์ ํ๋ค
- WebSocket์ ๋จผ์ ์๋ฒ์์ ์ ๊ธฐ์ ์ธ HTTP ์ฐ๊ฒฐ์ ์ค์ ํ ๋ค์ Upgradeํค๋๋ฅผ ์ ์กํ์ฌ ์๋ฐฉํฅ ์น ์์ผ ์ฐ๊ฒฐ๋ก ์ ๊ทธ๋ ์ด๋ํฉ๋๋ค.
Handshake๊ฐ ์๋ฃ๋๊ณ Connection์ ์ ์งํ๋ค.
- ์ ํต์ ์ธ HTTP ํต์ ์ ์์ฒญ-์๋ต์ด ์๋ฃ๋๋ฉด Connection์ close ํ๋ค. ๋๋ฌธ์ ์ด๋ก ์ ํ๋์ Server๊ฐ Port ์์ ํ๊ณ(n <65535)๋ฅผn<65535 ๋๋ client์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ค.
- WebSocket์ Connection์ ์ ์งํ๊ณ ์์ผ๋ฏ๋ก, ๊ฐ์ฉ Port ์๋งํผ์ Client์ ํต์ ํ ์ ์๋ค.

