WebSocket ๊ธฐ๋ฐ ์ค์๊ฐ ํ์ ๊ธฐ์ฌ ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์
์์ Java๋ก ๊ตฌํ๋์์ผ๋ฉฐ, WebSocket + STOMP ํ๋กํ ์ฝ ๊ธฐ๋ฐ์ผ๋ก ์๋ฒ์ ํต์ ํ๊ณ , JWT ๊ธฐ๋ฐ ์ธ์ฆ์ ์ํํฉ๋๋ค. ์ค์๊ฐ ์ฝ ์์ , ์๋ ์น์ฐจ/ํ์ฐจ, ์ดํ ์ํ ๋ณด๊ณ ๋ฑ ์ฃผ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ๋ชฉ์ : ์๋ฒ์์ ํต์ , ๋น๋๊ธฐ ์ฒ๋ฆฌ, ์ค์๊ฐ ํต์
- Java 21
- RestTeamplate
- WebSocket / STOMP
- RestTemplate ๊ธฐ๋ฐ ๋ก๊ทธ์ธ ์์ฒญ
- WebSocket ์ฐ๊ฒฐ ์ ํค๋๋ก ํ ํฐ ํฌํจ
[ RestTemplate ๋ก๊ทธ์ธ ] โ [ JWT ๋ฐ๊ธ ]
โ
[ WebSocket ์ฐ๊ฒฐ (STOMP + JWT) ]
โ
[ ์ฝ ์์ ๊ตฌ๋
/user/queue/call-request ]
โ
[ ์๋ฝ ์์ฒญ ์ ์ก /app/taxi-driver/accept-call ]
โ
[ ์น์ฐจ ์์ /app/taxi-driver/ride-start โ 5์ด ํ ]
โ
[ ํ์ฐจ ์๋ฃ /app/taxi-driver/ride-finish โ 15์ด ํ ]
โ
[ ์ดํ ์๋ต ์์ /user/queue/ride-status ]
# ์คํ
java -jar - ๋ก๊ทธ์ธ ์ ๋ณด ๋ฐ ์๋ฒ ์ฃผ์ ์ ๋ ฅ
- ์๋์ผ๋ก ๋ก๊ทธ์ธ ํ WebSocket ์ฐ๊ฒฐ
- ์์ ๋ ์ฝ์ ์๋ ์๋ฝํ๊ณ , ์ผ์ ์๊ฐ ๊ฐ๊ฒฉ์ผ๋ก ์น์ฐจ/ํ์ฐจ ์์ฒญ ์ ์ก
- ์ดํ ์ข
๋ฃ ํ ์ํ ์๋ ์ ํ:
OFF_DUTY โ AVAILABLE
๐ application
โโ ClientService.java # WebSocket ์ฐ๊ฒฐ ๋ฐ ๋ฉ์์ง ์ฒ๋ฆฌ
โโ TaxiDriverRunner.java # main() ์คํ ํด๋์ค
โโ RestTemplateToken.java # JWT ๋ฐ๊ธ ์ฒ๋ฆฌ
๐ domain.model
โโ CallAcceptRequest.java
โโ DrivingInfoResponse.java
โโ DrivingSummaryResponse.java
โโ TaxiDriverStatus.java # Enum (AVAILABLE, RESERVED, DRIVING, OFF_DUTY)
- WebSocket ์ฐ๊ฒฐ ์คํจ โ ๋ค์ ์ฌ์ฐ๊ฒฐ ์๋
- ์๋ฝ ์คํจ โ ์ด๋ฏธ ๋ค๋ฅธ ๊ธฐ์ฌ์๊ฒ ์ ์ ๋ ์ฝ์ผ ์ ์์
- ๋ฉ์์ง ์์ ๋๋ฝ โ
/user/queue/*๊ตฌ๋ ๊ฒฝ๋ก์ ๋ฉ์์ง ์ ์ก ๊ฒฝ๋ก ํ์ธ ํ์
- STOMP ํ๋กํ ์ฝ์ ํตํ ์ค์๊ฐ ํต์ ํ๋ฆ ์ดํด
- ์์ Java ๊ธฐ๋ฐ WebSocket ํด๋ผ์ด์ธํธ ๊ตฌ์ฑ ๊ฒฝํ
- ๋น๋๊ธฐ ํ๋ฆ์์ ์ํ ์ ์ด ํ์ด๋ฐ ์กฐ์ ์ ์ค์์ฑ ์ฒด๋
- ๋ฉํฐ ์ค๋ ๋ ์์ํ
- ์ฝ ์๋ฝ/๊ฑฐ์ UI์ ์ฐ๋๋ ์๋ฎฌ๋ ์ด์ ๋๊ตฌ ์ถ๊ฐ
- ๋ฉ์์ง ๋๋ฝ ๋๋น ์ฌ์ ์ก ๋ก์ง ๋์
- ์ํ ๋ก๊ทธ ์ ์ฅ ๋ฐ ์๊ฐํ