企业视频会议系统音视频通话EasyRTC-SFU版本研发中更合适的配置文件格式-TOML配置介绍

在 EasyRTC-SFU 版本的开发过程中,很多配置需要存储在配置文件中。开发人员经常使用的配置文件有 ini、json、xml、yaml 等格式,在综合分析各种文件格式的优劣后,我们最终确认使用 toml 格式作为配置文件格式。

RTC.png

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 更简单,不采用缩进、括号等方式,可读性和可编辑性非常好,因此最终采用此种格式作为项目的配置文件。

EasyRTC.png

toml 文件的官方网址为https://github.com/toml-lang/toml。感兴趣的人可以去官网继续学习更多的用法。

最后再来讲一下EasyRTC-SFU版本的特点。SFU架构特点是不对音视频进行混流,收到某个终端共享的音视频流后,就直接将该音视频流转发给房间内的其他终端。EasyRTC-SFU版使用该方案能够对CPU资源实现低消耗,且有很大的灵活性,能够更好地适应不同的网络状况和终端类型。

RTC1.png

如若想了解更多内容,欢迎访问TSINGSEE青犀视频,也可以随时咨询我们。

猜你喜欢

转载自blog.csdn.net/TsingSee/article/details/109032185
今日推荐