이번 포스팅에서는 단방양 통신을 할 수 있는 SSE에 대해 다뤄보겠습니다.
1. SSE(Server-Sent Events)란?
SSE(Server-Sent Events)는 서버에서 클라이언트로 실시간 데이터를 푸시하는 기술입니다. 일반적인 HTTP 요청과 다르게, 서버가 지속적으로 데이터를 보낼 수 있도록 연결을 유지하는 방식입니다.
특징
- 단방향 통신(서버 -> 클라이언트)
- 가벼운 HTTP 기반 프로토콜 사용
- WebSocket보다 간단하게 실시간 데이터를 처리할 수 있음
2. SSE vs WebSocket
속성 | SSE | WebSocket |
연결 방식 | 단방향 통신 | 양방향 통신 |
프로토콜 | HTTP 기반 | TCP 기반 |
자동 재연결 | 기본 지원 | 구현해야함 |
복잡도 | 간담함 | 비교적 복잡 |
3. 안드로이드에서 SSE 구현하기
3.1 의존성 추가
implementation("com.squareup.retrofit2:retrofit:2.9.0")
implementation("com.squareup.okhttp3:okhttp:4.9.3")
3.2 인터페이스 생성
import okhttp3.ResponseBody
import retrofit2.Call
import retrofit2.http.GET
import retrofit2.http.Streaming
interface SSEService {
@Streaming
@GET("/events")
fun getServerEvents(): Call<ResponseBody>
}
3.3 데이터 수신
import okhttp3.ResponseBody
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import java.io.BufferedReader
import java.io.InputStreamReader
class SSEClient {
private val retrofit = Retrofit.Builder()
.baseUrl("https://your-api.com")
.addConverterFactory(GsonConverterFactory.create())
.build()
private val service = retrofit.create(SSEService::class.java)
fun startListening() {
val response = service.getServerEvents().execute()
val reader = BufferedReader(InputStreamReader(response.body()?.byteStream()))
reader.use {
var line: String?
while (reader.readLine().also { line = it } != null) {
println("Received Event: $line")
}
}
}
}
4. 정리
이번 포스팅에서는 SSE의 기본 개념과 안드로이드에서 구현하는 방법에 대해 알아보았습니다.
SSE는 서버에서 클라이언트로 실시간 데이터를 전송하는 기술로 WebSocket보다 간단하게 실시간 이벤트를 처리할 수 있습니다. SSE를 활용하면 실시간 알림, 주식 데이터 업데이트, 채팅 기능 등에 유용하게 적용할 수 있습니다!🚀
'안드로이드' 카테고리의 다른 글
[Android] - dependency api에 관하여.... (0) | 2025.04.15 |
---|---|
[Android] - OkHttp VS Retrofit (0) | 2025.04.01 |
[Android] - 데이터 스트림을 다루는 방법 코루틴 Flow! (0) | 2025.02.18 |
[Android] - 안드로이드 비동기! Coroutine! (0) | 2025.02.10 |
[Android] - 안드로이드 디자인 패턴 MVVM편 (6) | 2025.01.13 |