Junhan0037 / spring-websocket

๐Ÿ’ฌ spring websocket ๐Ÿ’ฌ

Repository from Github https://github.comJunhan0037/spring-websocketRepository from Github https://github.comJunhan0037/spring-websocket

Spring Websocket

๊ฐœ๋ฐœ ํ™˜๊ฒฝ

  • Spring Boot v2.5.9
  • Spring WebSocket

Branch

  • chatting-server : ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ฑ„ํŒ…๋ฐฉ ์„œ๋ฒ„
  • chatting-basic : ํ•˜๋‚˜์˜ ์ฑ„ํŒ…๋ฐฉ ์ผ๊ด„ ์„œ๋ฒ„

WebSocket

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, ์ฆ๊ถŒ๊ฑฐ๋ž˜, ํ™”์ƒ์ฑ„ํŒ… ๋“ฑ)

WebSocket Sevrer๋ฅผ ์šด์šฉํ•  ๋•Œ์˜ ์œ ์˜์‚ฌํ•ญ

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์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฑ„ํŒ… ํ”„๋กœ๊ทธ๋žจ

About

๐Ÿ’ฌ spring websocket ๐Ÿ’ฌ


Languages

Language:Java 52.9%Language:HTML 47.1%