Callbacks

Overview

RemonCast, RemonCall의 κ°„λ‹¨ν•œ μ½”λ“œ 만으둜 톡신 및 방솑이 κ°€λŠ₯ ν•©λ‹ˆλ‹€. μ‚¬μš©μžμ˜ ν•„μš”μ— 따라 UI처리 및 μΆ”κ°€ μž‘μ—…μ΄ ν•„μš”ν•œ κ²½μš°κ°€ λ°œμƒ ν•©λ‹ˆλ‹€. μ•„λž˜μ˜ λ‹€μ–‘ν•œ Callback을 톡해 보닀 세뢀적인 개발이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

μ•ˆλ“œλ‘œμ΄λ“œ 2.4.13, iOS 2.6.9 버전뢀터 μ½œλ°±μ€ λͺ¨λ‘ UI Thread μ—μ„œ ν˜ΈμΆœλ©λ‹ˆλ‹€. 이전 λ²„μ „μ˜ 경우 UI μš”μ†Œμ˜ λ³€κ²½ μ‹œ UI Thread 와 κ΄€λ ¨ν•œ 처리λ₯Ό μΆ”κ°€ν•΄μ•Ό ν•©λ‹ˆλ‹€.

방솑과 톡신은 각각에 μ ν•©ν•œ μ΄λ²€νŠΈμ™€ 흐름을 κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό μ•Œμ•„λ‘λ©΄ Callbackλ₯Ό ν™œμš©ν•˜λŠ”λ° 도움이 λ©λ‹ˆλ‹€. 이에 λŒ€ν•œ λ‚΄μš©μ€ μ•„λž˜λ₯Ό μ°Έκ³ ν•˜μ„Έμš”.

Flowchevron-rightChannelchevron-right

Basics

onInit(token) / onInit()

onInit은 SDKκ°€ 인터넷을 톡해 RemoteMonster μ„œλ²„μ— μ •μƒμ μœΌλ‘œ μ ‘μ†ν•˜μ—¬ RemoteMonster의 방솑, 톡신 인프라λ₯Ό μ‚¬μš©ν•  μ€€λΉ„κ°€ μ™„λ£Œλœ μƒνƒœλ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. μ΄λ•Œ 인증 정보인 token을 돌렀 λ°›μŠ΅λ‹ˆλ‹€. λŒ€λ‹€μˆ˜μ˜ 경우 μ‚¬μš©ν•  일이 μ—†μœΌλ©° 디버깅에 ν™œμš©ν•˜κ²Œ λ©λ‹ˆλ‹€. (Android 의 경우 token 을 μ „λ‹¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.)

const listener = {
  onInit(token) {
    // Do something
  }
}

onCreate(channelId) - livecast

λ°©μ†‘μ—μ„œ μ†‘μΆœμžλ§Œ μ‚¬μš©ν•©λ‹ˆλ‹€. μ†‘μΆœμžκ°€ create()을 톡해 방솑을 μ •μƒμ μœΌλ‘œ μƒμ„±ν•˜μ—¬ μ†‘μΆœμ΄ λ λ•Œμž…λ‹ˆλ‹€.

onCreateλŠ” 인자둜 channelIdλ₯Ό λ„˜κ²¨μ€λ‹ˆλ‹€. 이것은 이 방의 κ³ μœ ν•œ κ΅¬λΆ„μžλ‘œ μ‹œμ²­μžλ“€μ΄ 이 channelIdλ₯Ό 톡해 μ ‘μ†ν•˜μ—¬ 방솑을 보게 λ©λ‹ˆλ‹€.

onJoin() - livecast

λ°©μ†‘μ—μ„œ μ‹œμ²­μžλ§Œ μ‚¬μš©λ©λ‹ˆλ‹€. μ‹œμ²­μžκ°€ join()을 톡해 연결이 μ™„λ£Œ λœν›„ λ―Έλ””μ–΄ μ‹œμ²­μ΄ κ°€λŠ₯ν•΄ μ‘Œμ„ λ•Œ 호좜 λ©λ‹ˆλ‹€.

onConnect(channelId) - communication

ν†΅μ‹ μ—μ„œλ§Œ μ‚¬μš©λ©λ‹ˆλ‹€. μ‹€μ§ˆμ μœΌλ‘œ 채널을 λ§Œλ“€μ–΄ 톡화λ₯Ό μš”μ²­ν•˜λŠ” Callerμ΄κ±°λ‚˜ λ§Œλ“€μ–΄μ§„ 채널에 μ ‘μ†ν•˜μ—¬ μš”μ²­μ— μ‘λ‹΅ν•˜λŠ” CalleeμΌλ•Œμ˜ λ™μž‘μ„ 달리 ν•˜λŠ” κ²½μš°κ°€ 많으며 κ°œλ°œμžκ°€ Caller, Callee여뢀에 λŒ€ν•œ μƒνƒœλ₯Ό 관리해야 ν•©λ‹ˆλ‹€.

CallerλŠ” connect()을 톡해 채널을 μƒˆλ‘œ λ§Œλ“€κ³  μƒλŒ€λ°©μ΄ μž…μž₯ν•˜κΈ°λ₯Ό κΈ°λ‹€λ¦½λ‹ˆλ‹€.

CalleeλŠ” connect()을 톡해 이미 λ§Œλ“€μ–΄μ§„ 채널에 μ ‘μ†ν•˜κ²Œ λ©λ‹ˆλ‹€. μ΄λ•Œ λ§Œλ“€μ–΄μ§„ μ±„λ„μ˜ channelIdλ₯Ό ν•„μˆ˜λ‘œ ν•„μš”ν•˜κ²Œ λ©λ‹ˆλ‹€. μ •μƒμ μœΌλ‘œ μ™„λ£Œλ˜λ©΄ onConnectκ°€ μƒκΈ°λ‚˜, Callee라면 κ³§λ°”λ‘œ λ°œμƒν•˜λŠ” onCompleteλ₯Ό μ‚¬μš©ν•˜λŠ”κ²ƒμ„ ꢌμž₯ν•©λ‹ˆλ‹€.

onComplete() - communication

ν†΅μ‹ μ—λ§Œ μ‚¬μš©λ©λ‹ˆλ‹€. μƒν˜Έκ°„ 연결이 μ™„λ£Œ λœν›„ λ―Έλ””μ–΄ 전솑이 κ°€λŠ₯ν•΄ μ‘Œμ„ λ•Œ 호좜 λ©λ‹ˆλ‹€.

onClose()

μ‚¬μš©μžκ°€ λͺ…μ‹œμ μœΌλ‘œ close() ν•¨μˆ˜λ₯Ό 호좜 ν•˜κ±°λ‚˜ μƒλŒ€λ°©μ΄ close()ν•¨μˆ˜λ₯Ό 호좜 ν–ˆμ„λ•Œ λ˜λŠ” λ„€νŠΈμ›Œν¬ 이상 λ“±μœΌλ‘œ 더이상 연결을 μœ μ§€ ν•˜κΈ° μ–΄λ €μšΈ λ•Œ λ“± 연결이 μ’…λ£Œ 되면 호좜 되며, Remonμ—μ„œ μ‚¬μš©ν–ˆλ˜ μžμ›λ“€ ν•΄μ œκ°€ μ™„λ£Œλœ μƒνƒœμž…λ‹ˆλ‹€.

onError(error)

Remon이 λ™μž‘ 쀑에 μ—λŸ¬κ°€ λ°œμƒ ν• λ•Œ 호좜 λ©λ‹ˆλ‹€.

Error μ½”λ“œμ— λŒ€ν•΄ μžμ„Ένžˆ μ•Œκ³  μ‹ΆμœΌμ‹œλ©΄ μ•„λž˜ λ‚΄μš©μ„ μ°Έκ³ ν•˜μ‹œκΈ° λ°”λžλ‹ˆλ‹€.

Errorchevron-right

onRetry(completed) - Beta

Remon 이 λ™μž‘ 쀑에 λ„€νŠΈμ›Œν¬ ν™˜κ²½μ˜ 변경이 κ°μ§€λ˜λ©΄ μž¬μ—°κ²°μ„ μ‹œλ„ ν•©λ‹ˆλ‹€. 이 λ•Œ μž¬μ—°κ²° μƒνƒœλ₯Ό μ•Œλ €μ£ΌλŠ” onRetry() ν•¨μˆ˜κ°€ 호좜 되며 μž¬μ—°κ²°μ΄ μ‹œλ„κ°€ μ‹œμž‘ 될 λ•ŒλŠ” completed 값을 false둜 호좜 되고, μž¬μ—°κ²°μ΄ μ™„λ£Œ 되면 completed 값을 true둜 호좜 λ©λ‹ˆλ‹€. λ§Œμ•½ μž¬μ—°κ²° μ‹œλ„μ€‘ μž¬μ—°κ²°μ΄ μ‹€νŒ¨ ν•˜κ±°λ‚˜ μ—λŸ¬κ°€ λ°œμƒ ν•œλ‹€λ©΄ onRetry()κ°€ μ•„λ‹Œ onError() λ˜λŠ” onClose()κ°€ 호좜 될 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

N/A

Advanced

onRemoteVideoSizeChanged(view, size)/onLocalVideoSizeChanged(view, size)

μ˜μƒμ˜ μ‚¬μ΄μ¦ˆλŠ” λ„€νŠΈμ›Œν¬ μƒνƒœμ— 따라 μ‹œμ‹œκ°κ° λ³€ν™” ν•˜λ©°, μ˜μƒμ˜ λΉ„μœ¨μ€ μ˜μƒμž₯μΉ˜μ— 따라 λ‹€λ¦…λ‹ˆλ‹€. μ˜μƒ μ†‘μΆœμžκ°€ κ³ μ •λœ μ‚¬μ΄μ¦ˆμ™€ λΉ„μœ¨ 보μž₯ν•΄ μ£Όμ§€ μ•ŠλŠ” ν™˜κ²½μ΄λΌλ©΄ onRemoteVideoSizeChanged와 onLocalVideoSizeChanged ν•¨μˆ˜λ₯Ό κ΅¬ν˜„ ν•˜μ—¬ λ³€ν™” ν•˜λŠ” μ˜μƒν¬κΈ°μ— λ°˜μ‘ ν•˜λ„λ‘ κ΅¬ν˜„ν•©λ‹ˆλ‹€.

N/A

onStat(report)

톡신 / 방솑 μƒνƒœλ₯Ό μ•Œμˆ˜μžˆλŠ” reportλ₯Ό λ°›μŠ΅λ‹ˆλ‹€. reportλŠ” μ‚¬μš©μžκ°€ remon μƒμ„±μ‹œ μ„€μ •ν•œ statInterval간격 λ§ˆλ‹€ λ“€μ–΄μ˜€κ²Œ λ©λ‹ˆλ‹€. λ„€νŠΈμ›Œν¬ 상황등에 λ”°λ₯Έ λ―Έλ””μ–΄ ν’ˆμ§ˆμ„ λ‚˜νƒ€λƒ„μœΌλ‘œ μ‚¬μš©μžμ—κ²Œ λ‘œλ”© UI μ²˜λ¦¬λ“± μ•ˆλ‚΄λ₯Ό ν•˜λŠ”λ° μœ μš©ν•©λ‹ˆλ‹€.

μ΄λ•Œ, λ“€μ–΄μ˜€λŠ” 값은 μ˜μƒ 및 μŒμ„± 톡화 쀑에 ν˜„μž¬ ν†΅ν™”μ˜ ν’ˆμ§ˆμ΄ μ–΄λ– ν•œμ§€λ₯Ό ν†΅ν•©ν•˜μ—¬ 1μ—μ„œ 5κΉŒμ§€μ˜ λ‹¨κ³„λ‘œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ‚¬μš©μžλŠ” κ°„ν˜Ή μžμ‹  ν˜Ήμ€ μƒλŒ€λ°©μ˜ λ„€νŠΈμ›Œν¬ 문제둜 μΈν•˜μ—¬ 톡화 ν’ˆμ§ˆμ΄ μ•ˆμ’‹κ±°λ‚˜ λŠμ–΄μ§„ μƒν™©μ—μ„œλ„ μ„œλΉ„μŠ€μ˜ 문제라고 μƒκ°ν•˜κ³  λΆˆλ§Œμ„ μ œκΈ°ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ•Œλ¬Έμ— μ‚¬μš©μžμ˜ λ¬Έμ œκ°€ λ„€νŠΈμ›Œν¬μ˜ λ¬Έμ œμž„μ„ 사전에 μ•Œλ €μ£Όκ±°λ‚˜ λ‹€μ–‘ν•œ UI μ²˜λ¦¬κ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€.

ν˜„μž¬ 이 톡화 ν’ˆμ§ˆ μ •λ³΄λŠ” 5μ΄ˆμ— ν•œλ²ˆμ”© 받을 수 μžˆμŠ΅λ‹ˆλ‹€.

단계

ν’ˆμ§ˆ

λΉ„κ³ 

1

맀우 μ’‹μŒ

2

μ’‹μŒ

3

λ‚˜μ¨

4

맀우 λ‚˜μ¨

5

방솑, 톡화 뢈λŠ₯

Remon 객체λ₯Ό 생성할 λ•Œ μž…λ ₯ 인자둜 λ„£λŠ” listener의 λ©”μ†Œλ“œ 쀑 onStat() 을 κ΅¬ν˜„ν•˜μ—¬ ν’ˆμ§ˆ 정보λ₯Ό 받을 수 μžˆμŠ΅λ‹ˆλ‹€. μœ„μ˜ resultμ—μ„œ 받을 수 μžˆλŠ” μ—¬λŸ¬ 정보 쀑 result.rating 이 λ°”λ‘œ λ„€νŠΈμ›Œν¬ 상황에 λ”°λ₯Έ 톡합적인 톡화 ν’ˆμ§ˆ μ •λ³΄μž…λ‹ˆλ‹€.

보닀 더 μžμ„Έν•œ λ‚΄μš©μ€ μ•„λž˜λ₯Ό ν™•μΈν•˜μ„Έμš”.

Last updated