๋ฐ˜์‘ํ˜•
WebSocket
์„ค๋ช…

TCP ์ ‘์†์— ์ „์ด์ค‘ ํ†ต์‹  ์ฑ„๋„์„ ์ œ๊ณตํ•˜๋Š” ์ปดํ“จํ„ฐ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ
HTTP ํด๋ง๊ณผ ๊ฐ™์€ ๋ฐ˜์ด์ค‘ ๋ฐฉ์‹์— ๋น„ํ•ด ๋” ๋‚ฎ์€ ๋ถ€ํ•˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ์›น ์„œ๋ฒ„๊ฐ„์˜ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ. 
์„œ๋ฒ„๊ฐ€ ๋‚ด์šฉ์„ ํด๋ผ์ด์–ธํŠธ์— ๋ณด๋‚ด๋Š” ํ‘œ์ค€ํ™”๋œ ๋ฐฉ์‹์„ ์ œ๊ณต
์—ฐ๊ฒฐ์ด ์œ ์ง€๋œ ์ƒํƒœ์—์„œ ๋ฉ”์„ธ์ง€๋“ค์„ ์˜ค๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ํ—ˆ์šฉํ•จ. (์–‘๋ฐฉํ–ฅ)

โ€ป ์ „์ด์ค‘ ํ†ต์‹  (Full Duplex)
๋‘ ์ง€์ (์‹œ์ž‘๊ณผ ๋) ์‚ฌ์ด์—์„œ ์ •๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ์ „์ž ํ†ต์‹  ์‹œ์Šคํ…œ
โ€ป TCP (Transmission Control Protocol), ์ „์†ก์ œ์–ดํ”„๋กœํ† ์ฝœ
์„œ๋ฒ„๋ผ๋ฆฌ ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•œ ๊ทœ์•ฝ(ํ”„๋กœํ† ์ฝœ)
์›น๋ธŒ๋ผ์šฐ์ €๋“ค์ด WWW์— ์„œ๋ฒ„ ์—ฐ๊ฒฐํ• ๋•Œ ์‚ฌ์šฉ
์ด๋ฉ”์ผ ์ „์†ก ๋ฐ ํŒŒ์ผ ์ „์†ก์‹œ ์‚ฌ์šฉ

โœฑ ์ตœ์ดˆ ์—ฐ๊ฒฐ์‹œ  
    1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์›น์†Œ์ผ“ ํ•ธ๋“œ์…ฐ์ดํฌ ์š”์ฒญ์„ ๋ณด๋ƒ„
    2. ์„œ๋ฒ„๋Š” ์›น์†Œ์ผ“ ํ•ธ๋“œ์…ฐ์ดํฌ ์‘๋‹ต์„ ๋ณด๋ƒ„
    3. ์ดํ›„๋กœ ํด๋ผ์ด์–ธํŠธ๋Š” ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์š”์ฒญ์„ ๋ณด๋‚ผ์ˆ˜ ์žˆ์Œ. (!= HTTP)


 

Websocket in Spring
๊ด€๋ จ ์˜ˆ์ œ 

https://spring.io/guides/gs/messaging-stomp-websocket/ ์„ ์ฐธ๊ณ ํ•˜์—ฌ ์‹ค์Šต์„ ํ•ด ๋ณด์•˜๋‹ค. 
ํ•ด๋‹น ๋งํฌ๋Š” STOMP(Simple Text Messaging protocol)์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

โ€ป STOMP(Simple Text Messaging protocol)
ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ๋ฉ”์„ธ์ง• ํ”„๋กœํ† ์ฝœ
์ด๋ฅผ ์ด์šฉํ•˜์—ฌ Binary, Text๊ฐ€ ์•„๋‹Œ ๊ทœ๊ฒฉ์„ ๋งž์ถ˜ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. 
๋ฐœํ–‰(pub), ๊ตฌ๋…(sub), ๋ฉ”์„ธ์ง€๋ธŒ๋กœ์ปค(=๋ฐœ์‹ ์ž๊ฐ€ ๋ฉ”์„ธ์ง€ ๋ฐ›์•„์™€ ์ˆ˜์‹ ์ž์—๊ฒŒ ์ „๋‹ฌ) ๋“ฑ์˜ ๊ฐœ๋…์ด ์žˆ๋‹ค.

๊ฐ„๋‹จํ•œ ์„œ๋ฒ„ ๊ตฌ๋™์‹œ, ์›น์†Œ์ผ“ ๋ฉ”์„ธ์ง• ๋ธŒ๋กœ์ปค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š”๋“ฏ ํ•˜๋‹ค. (SimpleBrokerMessageHandler)

+ Fallback Options์œผ๋กœ SockJS์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค. 

 

ํ…Œ์ŠคํŠธ ํ™”๋ฉด

์ตœ์ดˆ์—ฐ๊ฒฐ์‹œ (๋ธŒ๋ผ์šฐ์ €1(์ƒ๋‹จ), ๋ธŒ๋ผ์šฐ์ €2(ํ•˜๋‹จ))

 

๋ธŒ๋ผ์šฐ์ €1์ด TARGET1์„ ์ž…๋ ฅ ํ•˜์˜€์„๋•Œ

๋ธŒ๋ผ์šฐ์ €์—์„œ Send ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ, /app/hello ์„ ํ˜ธ์ถœํ•˜๊ณ 
๋ฉ”์„ธ์ง€ ๋ธŒ๋กœ์ปค ํ•ธ๋“ค๋Ÿฌ ๋‚ด์—์„œ ์ฒ˜๋ฆฌ ํ›„ /topic/greetings ์œผ๋กœ ๊ฒฐ๊ณผ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•จ!

 

๋ธŒ๋ผ์šฐ์ €2๊ฐ€ TARGET2์„ ์ž…๋ ฅ ํ•˜์˜€์„๋•Œ

 

 

 


์ฐธ๊ณ 

๋งํฌ: https://ko.wikipedia.org/wiki/%EC%9D%B4%EC%A4%91%ED%86%B5%EC%8B%A0

 

์ด์ค‘ํ†ต์‹  - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „

์ด์ค‘ํ†ต์‹ (duplex) ๋˜๋Š” ์Œ๋ฐฉํ–ฅ ํ†ต์‹ ์€ ๋‘ ์ง€์  ์‚ฌ์ด์—์„œ ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ์ „์ž ํ†ต์‹  ์‹œ์Šคํ…œ์„ ๋งํ•œ๋‹ค. ์ด์ค‘ ํ†ต์‹ ์„ ํ•  ๋•Œ ์ „์†ก ๋ฐฉํ–ฅ๋งˆ๋‹ค ๋‘ ๊ฐœ์˜ ํ†ต์‹  ์„ ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹จ์ˆœํ•˜์ง€๋งŒ ์ „์†ก๋กœ๋ฅผ ์•„๋ผ

ko.wikipedia.org

๋งํฌ: https://ko.wikipedia.org/wiki/%EC%9B%B9%EC%86%8C%EC%BC%93

 

์›น์†Œ์ผ“ - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „

์›น์†Œ์ผ“(WebSocket)์€ ํ•˜๋‚˜์˜ TCP ์ ‘์†์— ์ „์ด์ค‘ ํ†ต์‹  ์ฑ„๋„์„ ์ œ๊ณตํ•˜๋Š” ์ปดํ“จํ„ฐ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ์›น์†Œ์ผ“ ํ”„๋กœํ† ์ฝœ์€ 2011๋…„ IETF์— ์˜ํ•ด RFC 6455๋กœ ํ‘œ์ค€ํ™”๋˜์—ˆ์œผ๋ฉฐ ์›น IDL์˜ ์›น์†Œ์ผ“ API๋Š” W3C์— ์˜ํ•ด ํ‘œ์ค€

ko.wikipedia.org

๋งํฌ :https://ko.wikipedia.org/wiki/%EC%A0%84%EC%86%A1_%EC%A0%9C%EC%96%B4_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C

 

์ „์†ก ์ œ์–ด ํ”„๋กœํ† ์ฝœ - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „

์ „์†ก ์ œ์–ด ํ”„๋กœํ† ์ฝœ(Transmission Control Protocol, TCP, ๋ฌธํ™”์–ด: ์ „์†ก์กฐ์ข…๊ทœ์•ฝ)์€ ์ธํ„ฐ๋„ท ํ”„๋กœํ† ์ฝœ ์Šค์œ„ํŠธ(IP)์˜ ํ•ต์‹ฌ ํ”„๋กœํ† ์ฝœ ์ค‘ ํ•˜๋‚˜๋กœ, IP์™€ ํ•จ๊ป˜ TCP/IP๋ผ๋Š” ๋ช…์นญ์œผ๋กœ๋„ ๋„๋ฆฌ ๋ถˆ๋ฆฐ๋‹ค. TCP๋Š” ๊ทผ๊ฑฐ๋ฆฌ ํ†ต์‹ 

ko.wikipedia.org

๋งํฌ: https://namu.wiki/w/TCP

๋งํฌ: https://tecoble.techcourse.co.kr/post/2021-09-05-web-socket-practice/

 

์›น ์†Œ์ผ“์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž! - ์‹ค์ „ ํŽธ

์›น ์†Œ์ผ“์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž! - ์‹ค์ „ ํŽธ ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ €๋ฒˆ์— ์ž‘์„ฑํ–ˆ๋˜ ์›น ์†Œ์ผ“ ์ด๋ก  ํŽธ์— ์ด์–ด์„œ, ์Šคํ”„๋ง ํ™˜๊ฒฝ์—์„œ ์›น ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฒ•์— ๋Œ€ํ•ด ๋‹ค๋ฃจ๋ ค๊ณ  ํ•œ๋‹ค. STOMP ๊ตฌํ˜„ํ•˜๊ธฐ์— ์•ž์„œ, ์šฐ๋ฆฌ๋Š” ์ƒˆ

tecoble.techcourse.co.kr

๋งํฌ: https://tech.kakao.com/2020/06/22/websocket-part3/

 

์‹ค์‹œ๊ฐ„ ๋Œ“๊ธ€ ๊ฐœ๋ฐœ๊ธฐ(part.3) - Spring์˜ ๋™์‹œ์„ฑ ์ ‘๊ทผ ์ œ์–ด์— ๋ฐœ๋ชฉ ์žกํžŒ ์ด์•ผ๊ธฐ

์ „ํŽธ(์‹ค์‹œ๊ฐ„ ๋Œ“๊ธ€ ๊ฐœ๋ฐœ๊ธฐ(part.2) – ํ—˜๋‚œํ–ˆ์ง€๋งŒ ์œ ์ตํ–ˆ๋˜ ์›น์†Œ์ผ“ ์ŠคํŠธ๋ ˆ์Šค ํ…Œ์ŠคํŠธ ๋ฐ ์•ˆ์ •ํ™” ์ž‘์—…)์—์„œ ๊ณต์œ  ๋“œ๋ฆฐ ๋ฐ”์™€ ๊ฐ™์ด ๋‹ค์–‘ํ•œ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋””๋ฒ„๊น… ํˆด์˜ ์‹ค์ œ ํ™œ์šฉ ์‚ฌ๋ก€์ธ Spring SimpleBroker ํŠœ

tech.kakao.com

๋งํฌ: https://www.youtube.com/watch?v=rvss-_t6gzg

 

๋ฐ˜์‘ํ˜•

'๊ฐœ๋ฐœ > spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[AOP] AOP ์ ์šฉ ๊ด€๋ จ ์ด์Šˆ  (0) 2024.05.14
ํŠธ๋žœ์žญ์…˜  (0) 2021.11.25
Spring - ์Šคํ”„๋ง MVC ๊ฐ„๋‹จ ์ •๋ฆฌ  (0) 2021.06.05
Spring - DI (Dependency Injection)  (0) 2021.06.01
Spring - AOP(Aspect-Oriented Programming)  (0) 2021.05.25

+ Recent posts