본문 바로가기

안드로이드

[Android] - SSE로 실시간 통신하기!

이번 포스팅에서는 단방양 통신을 할 수 있는 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를 활용하면 실시간 알림, 주식 데이터 업데이트, 채팅 기능 등에 유용하게 적용할 수 있습니다!🚀