加速你對 WebRtc 和 Mqtt 的理解:名詞解釋筆記分享

前言
  • 因為在Android工作需求上遇到,
    需串接Mqtt與webRtc,
    所以大概了解一些名詞的意思,
    不過這段主要還是由後端完成,
    這邊身為Android工程師大概就是了解一下,
    並且紀錄,未來有遇到可以再快速回憶下。
MQTT 筆記
  • QoS (Quality of Service) : 訊息傳送服務的quality,有三種模式
    • At most once : 最多一次,容易丟包,適合不在意是否收到data的環境,因下次pulish很快會被推送

    • At least once : 至少一次,保證包一定會送到,只是可能收到重複的包

    • Exactly once : 確定一次,確定只會送到一次包,只是收動重複包或包遺失的狀況,就會有錯誤處理,資源消耗更多

    • MQTT Header : 固定2bytes,消耗更少

    • MQTT Session:當MQTT Client 連上server時,可用 ‘Clean Session’ flag 控制其state
      a. ‘Clean Session’ is 0 : 屬於persistent session,當client斷連時,session仍回保留直到其timeout
      b. ‘Clean Session’ is 1 : 屬於transient session,當client斷連即摧毀session

    • MQTT CONNECT Keep Alive : MQTT連線時,攜帶一個Keep Alive的字節來代表keep alive時間,當沒有任何傳輸響應時,可帶PINGREQ去維持狀態,server則以PINGRESP回應。
      當Keep alive timeout則關閉連線(通常狀態下keep alive timeout*1.5為timeout時間,主要看server設定)。
    • LWT (last will and testament) : 一種遺囑的概念,當MQTT client在不正常狀態下斷線,像是斷線時沒有呼叫 disconnect,這時server會puslish will message過去。
    • MQTT retained message : 可以透過 RETAIN flag去設定 retained message ,retained message 會存在 broker,並且會傳給有subscribe這個topic的人,且一個topic只能有一個retained message
WebRtc相關
  • 了解以下名詞:

    例如:取得公有IP(實際上真實IP,非NAT下私有IP)、port

    • TURN (Traversal Using Relay NAT) : 一種支持NAT的網路協定,其特色:
      a. 資料傳輸是透過server,消耗的是server的資源
      b. 確保所有呼叫能在整個環境中運行
      c. 如果通訊過程中出現錯誤,可提供fallback

    • ICE (Interactive Connectivity Establishment) : 一種針對STUN & TURN 來規範其通訊標準 特色:會試圖找出server之間通訊的最佳距離

You might also enjoy