BackEnd/Spring
WebSocket์ผ๋ก Echo์๋ฒ ๊ตฌํํ๊ธฐ with.Spring boot
Hero_O
2022. 9. 6. 21:50
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 ์ ํตํ ์น ์์ผ ๊ฒฐ๊ณผ ํ์ธ
- WebSocket Request ์์ฑ
2. ws://localhost:8080/echo ๋ก ์น ์์ผ ์ฐ๊ฒฐ
3. Connect -> ๋ฉ์์ง ์ ์ก -> DisConnect
Spring Boot์์ ์น ์์ผ ๋จ์
- HTTP ํ๋กํ ์ฝ ์ฒ๋ผ ํฌ๋งท์ด ์ ํด์ ธ ์์ง ์์, ์ปค์คํ ํ ํ๋กํ ์ฝ์ด ์ ์ํด ์ง์ผ์ผ ํ๋ค.
- ์ฐ๊ฒฐ ์ฃผ์๋ง๋ค ํธ๋ค๋ฌ๋ฅผ ๊ตฌํํ๊ณ ๋ฑ๋กํด์ฃผ์ด์ผ ํ๋ค.
- Spring Security ์ ํจ๊ป ์ฌ์ฉํ ์ ์๋ค.
๋๋์
์น ์์ผ์ ํ์ฉํด ์ฑํ ์๋ฒ๋ฅผ ์ ์ฝ๊ฒ ๋ง๋ค ์ ์์ ๊ฒ์ด๋ผ๋ ์๊ฐ์ด ๋ค์๋ค. ๋ค๋ง, ์ฐ๊ฒฐ ํด๋ผ์ด์ธํธ ํ๋ ๋น ํ๋์ ํฌํธ๋ฅผ ์ก์ ๋จน๋๋ค๋ฉด ํ๋์ ์๋ฒ์์ ๋ช ๋ช ์ ์ฌ์ฉ์๋ฅผ ๊ฐ๋นํ ์ ์์๊น? ๊ทธ ์๊ฐ ์ ์ ํธ์ด๋ผ๋ฉด ์นด์นด์คํก ๊ฐ์ ์ ๊ตญ๋ฏผ์ด ์ฌ์ฉํ๋ ์ฑํ ์ดํ์ ์ด๋ฌํ ์์ผ์ฐ๊ฒฐ์ ํตํด ๊ณผ์ฐ ์ฑํ ์ ๊ตฌํํ ์ ์์๊น?
์ฝ๋๋ฅผ ํฌํจํ Git Repository
์ฐธ์กฐ
- https://www.baeldung.com/java-websockets
- https://www.baeldung.com/postman-websocket-apis
- https://www.baeldung.com/rest-vs-websockets
- https://developer.mozilla.org/ko/docs/Web/API/WebSockets_API
- https://d2.naver.com/helloworld/1336
- https://xephysis.tistory.com/42
- https://www.youtube.com/watch?v=rvss-_t6gzg