본문 바로가기
Swift

RxSwift에서의 Hot Observable과 Cold Observable: 개념과 예제

by mr.conan 2023. 6. 23.
728x90
반응형

RxSwift는 ReactiveX 프로그래밍 모델을 Swift 언어로 구현한 라이브러리로, Hot Observable과 Cold Observable과 같은 개념들이 중요한 역할을 합니다. 이번 글에서는 RxSwift에서의 Hot Observable과 Cold Observable에 대한 개념과 예제를 알아보겠습니다.

1.개념:

Hot Observable은 데이터 스트림을 이미 생성한 후에 구독(subscription)이 시작된 경우입니다. 이는 데이터 스트림이 이미 존재하고 구독자가 가장 최신의 데이터를 수신하도록 보장하는 특징을 가지고 있습니다.

Cold Observable은 데이터 스트림이 구독자가 구독을 시작할 때마다 생성되는 경우입니다. 각 구독자는 독립적인 데이터 스트림을 받게 되며, 각각의 구독자는 독립적으로 데이터를 처리합니다.

 

 

2.Hot Observable 예제: 주식 시세 업데이트

주식 시세 업데이트는 Hot Observable의 대표적인 예시입니다. 주식 시세는 이미 생성된 데이터 스트림으로, 구독자들은 실시간으로 최신 시세 정보를 받을 수 있습니다.

예를 들어, 다음과 같이 주식 시세 스트림을 생성하고 구독할 수 있습니다:

let stockPrices = Observable.from([150.0, 155.0, 160.0, 165.0, 170.0])
                              .publish()

stockPrices.subscribe(onNext: { price in
    print("주식 가격: \(price)")
}).disposed(by: disposeBag)

stockPrices.connect()

 

위 예제에서는 publish() 함수를 사용하여 주식 시세를 Hot Observable로 만들었습니다. subscribe() 함수를 통해 구독자가 데이터를 수신하고, connect() 함수를 호출하여 데이터 스트림을 시작합니다.

 

 

3.Cold Observable 예제: 사용자 등록 이벤트

사용자 등록 이벤트는 Cold Observable의 예시입니다. 각 사용자 등록은 독립적인 데이터 스트림으로, 새로운 사용자가 등록될 때마다 해당 데이터 스트림이 생성됩니다.

예를 들어, 다음과 같이 사용자 등록 이벤트를 생성하고 구독할 수 있습니다:

func registerUser(username: String) -> Observable<String> {
    return Observable.create { observer in
        observer.onNext("새로운 사용자 등록: \(username)")
        observer.onCompleted()
        return Disposables.create()
    }
}

let userRegistration = registerUser(username: "John")

userRegistration.subscribe(onNext: { event in
    print(event)
}).disposed(by: disposeBag)

위 예제에서는 create() 함수를 사용하여 사용자 등록 이벤트를 Cold Observable로 만들었습니다. 각 사용자 등록마다 독립적인 데이터 스트림이 생성되며, subscribe() 함수를 통해 구독자가 데이터를 수신합니다.

 

 

결론: RxSwift에서는 Hot Observable과 Cold Observable이라는 두 가지 중요한 개념이 있습니다. Hot Observable은 이미 생성된 데이터 스트림으로 구독자가 최신 데이터를 수신하는 반면, Cold Observable은 각 구독자마다 독립적인 데이터 스트림을 생성하여 처리합니다. 이러한 개념을 이해하고 활용하면 데이터 스트림을 효율적으로 다룰 수 있고, 반응형 프로그래밍에서 더욱 강력한 기능을 발휘할 수 있습니다.

728x90
반응형