licode學習之erizo篇--WebRTCEvent


erizo的webrtcconnection使用監聽來通知事件,其接口為:

enum WebRTCEvent {
  CONN_INITIAL = 101, CONN_STARTED = 102, CONN_GATHERED = 103, CONN_READY = 104, CONN_FINISHED = 105,
  CONN_CANDIDATE = 201, CONN_SDP = 202, CONN_SDP_PROCESSED = 203,
  CONN_FAILED = 500
};

class WebRtcConnectionEventListener {
 public:
    virtual ~WebRtcConnectionEventListener() {
    }
    virtual void notifyEvent(WebRTCEvent newEvent, const std::string& message, const std::string &stream_id = "") = 0;
};

在event發生時,其參數的內容進行總結:

1、CONN_INITIAL:WebrtcConnection對象創建后,需要外面手動調用init方法,該方法會回調notifyEvent,並傳遞事件為改枚舉值,message和stream_id均為空值。

2、CONN_STARTED:這個狀態沒有看到里面有明顯調用的地方,有可能是保留的狀態碼

3、CONN_GATHERED:WebrtcConnection的createOffer或者第一次setRemoteSdp時啟動自身ICE過程,ICE完成收集時,發送該通知。message為自己的sdp數據

4、CONN_READY:當DTLS握手交互成功完成時,發送該通知

5、CONN_FINISH:WebrtcConnection對象關閉,調用close時,發送該通知

6、CONN_CANDIDATE:自身ICE獲取到Candidate時,發送該通知。message為candidate信息

7、CONN_SDP:沒有被使用

8、CONN_SDP_PROCESSED:處理remote sdp時,發送該通知。message為remote sdp

9、CONN_FAILED:ICE失敗,Dtls握手交互失敗,均發送該通知。message為remote sdp

 

基於事件的進一步理解,webrtcconnection的使用的正確方法為:

A、erizo主動發送offer

  a、webrtcconnection createOffer

  b、CONN_GATHERED時,發送sdp給client

  c、CONN_CANDIDATE時,發送candidate給client

  d、接收到answer,調用webrtcconnection setRemoteSdp

  e、接收到candidate,調用webrtcconnection addRemoteCandidate

  f、CONN_SDP_PROCESSED時,做私有處理

  g、CONN_FAILED時,進行重試,或者其他異常處理

 

B、erizo被動接收offer

  a、接收到answer,調用webrtcconnection setRemoteSdp

  b、接收到candidate,調用webrtcconnection addRemoteCandidate

  c、CONN_GATHERED時,發送sdp給client

  d、CONN_CANDIDATE時,發送candidate給client

  e、CONN_FAILED時,進行重試,或者其他異常處理

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM