企業視訊會議系統音視訊通話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青犀視訊,也可以隨時諮詢我們。