connect() 함수
는 호출한 시점부터 subscribe() 함수를 호출한 구독자에게 데이터를 발행String[] dt ={"red","green","blue"};
Observable<String> balls= Observable.interval(100L, TimeUnit.MILLISECONDS)
.map(Long::intValue)
.map(i->dt[i])
.take(dt.length);
ConnectableObservable<String> source =balls.publish();
source.subscribe(data->System.out.println("Subscriber #1 =>"+data));
source.subscribe(data->System.out.println("Subscriber #2 =>"+data));
source.connect();
CommonUtils.sleep(250);
source.subscribe(data->System.out.println("Subscriber #3 =>"+data));
CommonUtils.sleep(100);
👉🏻 첫 번째 구독자와 두 번째의 구독자가 추가되면 connect() 함수를 호출해 데이터 발생을 시작
sleep() 함수를 이용해 250ms를 기다리고 세 번째 구독자 추가
connect() 함수를 호출했으므로 이후에는 구독하면 다음의 데이터를 바로 수신할 수 있음.
//결과값
Subscriber #1 =>red
Subscriber #2 =>red
Subscriber #1 =>green
Subscriber #2 =>green
Subscriber #1 =>blue
Subscriber #2 =>blue
Subscriber #3 =>blue