• 企业视频会议系统音视频通话EasyRTCSFU版本研发中更合适的配置文件格式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青犀视频,也可以随时咨询我们。

  • 相关阅读:
    代码: 仿淘宝商品详情页左上,图片鼠标浮上去,图片部分区域放大 (页面布局:图片列表)
    !代码:页面布局
    代码: 返回页面顶部 jquery
    !!学习笔记:CSS3动画
    代码: 两列图片瀑布流(一次后台取数据,图片懒加载。下拉后分批显示图片。图片高度未知,当图片onload后才显示容器)
    !学习笔记:前端测试 、前端调试、console 等
    学习笔记:SASS
    !代码:伪类
    代码:css小图标
    学习笔记:ECharts
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/13853717.html
Copyright © 2020-2023  润新知