WebSocket은 양방향 통신이 가능한 실시간 네트워크 프로토콜입니다.
기존 HTTP는 클라이언트가 요청을 보내야 서버가 응답하는 단방향 구조지만,
WebSocket은 서버와 클라이언트가 항상 연결된 상태로 데이터를 주고받을 수 있는 구조입니다.
즉, "요청 → 응답"이 아닌, "연결 → 자유로운 송수신" 구조!
Android에서는 보통 다음과 같은 라이브러리를 사용해 WebSocket을 다룬다:
| 라이브러리 | 특징 |
|---|---|
| OkHttp | 가장 많이 쓰이는 WebSocket 구현체 (Square 제공) |
| Ktor Client | 코루틴 기반 비동기 WebSocket 처리 |
| Java-WebSocket | 순수 자바 기반 라이브러리 (웹서버 테스트용으로도 사용 가능) |
val client = OkHttpClient()
val request = Request.Builder()
.url("wss://example.com/socket")
.build()
val listener = object : WebSocketListener() {
override fun onOpen(webSocket: WebSocket, response: Response) {
webSocket.send("Hello from Android!")
}
override fun onMessage(webSocket: WebSocket, text: String) {
println("서버 메시지: $text")
}
override fun onFailure(webSocket: WebSocket, t: Throwable, response: Response?) {
println("에러 발생: ${t.message}")
}
}
val webSocket = client.newWebSocket(request, listener)
✅
wss://는 보안 WebSocket 프로토콜입니다 (https의 WebSocket 버전)
| 항목 | HTTP | WebSocket |
|---|---|---|
| 구조 | 요청 → 응답 | 연결 후 양방향 통신 |
| 속도 | 상대적으로 느림 | 빠름 (연결 유지) |
| 실시간성 | 낮음 | 높음 |
| 예시 | 뉴스 앱 API | 채팅, 실시간 음성 통화 등 |