1. 程式人生 > 實用技巧 >企業視訊會議系統音視訊通話EasyRTC-SFU版本研發中更合適的配置檔案格式-TOML配置介紹

企業視訊會議系統音視訊通話EasyRTC-SFU版本研發中更合適的配置檔案格式-TOML配置介紹

在 EasyRTC-SFU 版本的開發過程中,很多配置需要儲存在配置檔案中。開發人員經常使用的配置檔案有 ini、json、xml、yaml 等格式,在綜合分析各種檔案格式的優劣後,我們最終確認使用 toml 格式作為配置檔案格式。

ini 檔案格式是最傳統的配置檔案格式,其書寫格式如下:

[http]
; 是否開啟登陸輸入錯誤,則鎖定使用者 n 分鐘的功能,true/false
http_open_lock_error_user=true
; 登入錯誤 7 次
http_error_numbers=7
; Sqlite3資料庫檔案路徑
dir_data=data/db

.ini 檔案格式提供了一種簡單的配置檔案方案,但是在使用過程中會出現部分問題。比如對於布林型別的值,既可以是true/false,又可以使0/1,會使人產生混亂的情況。並且對於字串變數也未新增“”明確表示其為字串變數。對於多層巢狀和陣列的配置支援也不不是很完善。
.json 檔案格式在資料儲存和傳輸的時候非常方便,在需要網路傳輸以及序列化反序列化操作時常用,其基本格式如下:

{
    "a": "a",
    "b": "b",
    "c":{
        "x": "c.x",
        "y": "c.y"
    },
    "e":[
        { "x":"e[0].x", "y":"e[0].y" },
        { "x":"e[1].x", "y":"e[1].y" }
    ]}

json 格式雖然支援很多種操作,但是無法添加註釋,並且如果程式設計師誤操作,經常會讓檔案中的配置全部縮寫在一起,導致檢視困難的問題。
.xml 檔案是一種可擴充套件標記語言,其基本寫法如下:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

xml 被設計用來傳輸和儲存資料,但是由上文可以看出編寫 xml 檔案比其他配置檔案都要多寫很多字元,不符合便捷的需求。
.yaml 檔案是目前最常用最流行的配置檔案格式。它支援物件、陣列等很多複雜資料,大小寫敏感,縮排不允許使用 tab,必須使用空格。其格式如下

languages:
  - Ruby
  - Perl
  - Python 
websites:
  YAML: yaml.org 
  Ruby: ruby-lang.org 
  Python: python.org 
  Perl: use.perl.org

yaml 雖然很適合,但是它的語法過於複雜,並且強制使用縮排表示層級關係,對於部分無編輯器的機器非常不友好。
因此最終確認採用 .toml 檔案作為配置檔案。其基本格式如下:

[http]
# HTTP 服務埠,非安全的方式,正式使用請填寫 false
httpEnable = true
httpAddr = "0.0.0.0:1313"
# HTTPS 服務埠,安全考慮僅支援 HTTPS
httpsAddr = "0.0.0.0:1413"
# HTTPS 公有證書
certFile = "./certs/cert.pem"
# HTTPS 私有祕鑰
privateKeyFile = "./certs/privkey.pem"
# 是否開啟 API 驗證
apiAuth = true

# 介面呼叫token或sid 有效時間 單位(秒), 86400 為 24 小時,24*60*60
tokenTimeout = 86400

該種格式的配置檔案比 ini 檔案更強大,比 .yaml 更簡單,不採用縮排、括號等方式,可讀性和可編輯性非常好,因此最終採用此種格式作為專案的配置檔案。

toml 檔案的官方網址為https://github.com/toml-lang/toml。感興趣的人可以去官網繼續學習更多的用法。

最後再來講一下EasyRTC-SFU版本的特點。SFU架構特點是不對音視訊進行混流,收到某個終端共享的音視訊流後,就直接將該音視訊流轉發給房間內的其他終端。EasyRTC-SFU版使用該方案能夠對CPU資源實現低消耗,且有很大的靈活性,能夠更好地適應不同的網路狀況和終端型別。

如若想了解更多內容,歡迎訪問TSINGSEE青犀視訊,也可以隨時諮詢我們。