ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

WebSocket

๐Ÿ’ก ํ•œ ๋ฒˆ ์—ฐ๊ฒฐํ•ด์„œ ์ง€์†์ ์œผ๋กœ ์–‘๋ฐฉํ–ฅ ํ†ต์‹ ์œผ๋กœ  ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฐ€๋Šฅํ•œ TCP ํ”„๋กœํ† ์ฝœ

 

HTTP VS WebSocket ์ฐจ์ด

์ฃผ๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” HTTP ํ”„๋กœํ† ์ฝœ๊ณผ WebSocket์„ ๋น„๊ตํ•ด๋ณด์ž.

 

 

HTTP WebSocket
๋น„ ์—ฐ๊ฒฐ์„ฑ ์—ฐ๊ฒฐ ์ง€ํ–ฅ
ํด๋ผ์ด์–ธํŠธ - ์„œ๋ฒ„ ์–‘๋ฐฉํ–ฅ ํ†ต์‹ 

 

๊ตฌํ˜„ํ•˜๊ธฐ

๊ตฌํ˜„ ๋‚ด์šฉ : ์›น ์†Œ์ผ“์„ ํ†ตํ•ด Echo ์„œ๋ฒ„๋ฅผ ๊ตฌํ˜„ ํ•ด๋ณธ๋‹ค.

 

1. ์˜์กด์„ฑ ์ถ”๊ฐ€ํ•˜๊ธฐ : WebSocket, Lombok

 

 

 

2. WebSocket Handler ์ƒ์„ฑ

 

 

  • WebSocketSession ์„ ์บ์‹ฑ ํ•˜๋Š” ์ด์œ ๋Š” ์ถ”ํ›„ ํ•ด๋‹น ์„ธ์…˜ ๋“ค์— ์„œ๋ฒ„์—์„œ ๊ฐ’์„ ์ „๋‹ฌํ•  ํ•„์š”๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด ์ฑ„ํŒ… ์„œ๋ฒ„์—์„œ ํ•œ ์‚ฌ๋žŒ์ด ์ „์†กํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ํ•ด๋‹น ์„œ๋ฒ„์— ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌํ•ด์•ผ ํ•  ๋•Œ ํ•ด๋‹น Set ์„ ํ•˜๋‚˜์”ฉ ๋Œ๋ฉด์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋‹ค.
  • WebSocketSession ์€ ์—ฐ๊ฒฐ๋œ ํ†ต์‹  ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค.
  • handleTextMessage ๋ฅผ ํ†ตํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • WebSocketSession.sendMessage(TextMessage) ๋ฅผ ํ†ตํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ์†ก์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

3. ์„ค์ • ํŒŒ์ผ ์ง€์ •

 

  • EchoWebSocketHandler ๋ฅผ /echo URI๋กœ ๋“ฑ๋กํ•œ๋‹ค 

 

๊ฒฐ๊ณผ

  • Postman ์„ ํ†ตํ•œ ์›น ์†Œ์ผ“ ๊ฒฐ๊ณผ ํ™•์ธ

 

  1.  WebSocket Request ์ƒ์„ฑ

 

2. ws://localhost:8080/echo ๋กœ ์›น ์†Œ์ผ“ ์—ฐ๊ฒฐ 

 

3. Connect ->  ๋ฉ”์‹œ์ง€ ์ „์†ก  -> DisConnect

 

 

Spring Boot์—์„œ ์›น ์†Œ์ผ“ ๋‹จ์ 

  • HTTP ํ”„๋กœํ† ์ฝœ ์ฒ˜๋Ÿผ ํฌ๋งท์ด ์ •ํ•ด์ ธ ์žˆ์ง€ ์•Š์•„, ์ปค์Šคํ…€ํ•œ ํ”„๋กœํ† ์ฝœ์ด ์ •์˜ํ•ด ์ง€์ผœ์•ผ ํ•œ๋‹ค.
  • ์—ฐ๊ฒฐ ์ฃผ์†Œ๋งˆ๋‹ค ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ๋“ฑ๋กํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
  • Spring Security ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

 

 

 

๋Š๋‚€์ 

์›น ์†Œ์ผ“์„ ํ™œ์šฉํ•ด ์ฑ„ํŒ… ์„œ๋ฒ„๋ฅผ ์† ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๋‹ค๋งŒ, ์—ฐ๊ฒฐ ํด๋ผ์ด์–ธํŠธ ํ•˜๋‚˜ ๋‹น ํ•˜๋‚˜์˜ ํฌํŠธ๋ฅผ ์žก์•„ ๋จน๋Š”๋‹ค๋ฉด ํ•˜๋‚˜์˜ ์„œ๋ฒ„์—์„œ ๋ช‡ ๋ช…์˜ ์‚ฌ์šฉ์ž๋ฅผ ๊ฐ๋‹นํ•  ์ˆ˜ ์žˆ์„๊นŒ? ๊ทธ ์ˆ˜๊ฐ€ ์ ์€ ํŽธ์ด๋ผ๋ฉด ์นด์นด์˜คํ†ก ๊ฐ™์€ ์ „๊ตญ๋ฏผ์ด ์‚ฌ์šฉํ•˜๋Š” ์ฑ„ํŒ… ์–ดํ”Œ์€ ์ด๋Ÿฌํ•œ ์†Œ์ผ“์—ฐ๊ฒฐ์„ ํ†ตํ•ด ๊ณผ์—ฐ ์ฑ„ํŒ…์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

 

์ฝ”๋“œ๋ฅผ ํฌํ•จํ•œ Git Repository

 

์ฐธ์กฐ

๋Œ“๊ธ€