1 个不稳定版本

0.0.0 2022 年 7 月 1 日

#12#dev-server

MIT/Apache

710KB
13K SLoC

Python 7.5K SLoC // 0.4% comments JavaScript 4K SLoC // 0.1% comments Go 1K SLoC // 0.1% comments Shell 70 SLoC // 0.2% comments Rust 8 SLoC

Build Status

AppRTC 演示代码

注意:该项目不再通过 https://appr.tc 提供。请参阅 Docker 了解本地开发/测试部署的说明。

开发

有关在 webrtc github 仓库中开发的详细信息,请参阅 WebRTC GitHub 仓库开发者指南

可以通过访问 https://127.0.0.1:8080 来访问开发 AppRTC 服务器。

在本地运行 AppRTC 需要 Google App Engine SDK for PythonNode.jsGrunt

请按照 Node.js 网站Python PIPGrunt 网站 上的说明进行安装。

Node.js 和 Grunt 可用后,您可以从项目根目录运行 npm installpip install -r requirements.txt 来安装所需的依赖项。

在启动 AppRTC 开发服务器以及每次更新源代码时,您需要运行 grunt build 来重新编译 App Engine 软件包。

您可以从 out/app_engine 目录启动 AppRTC 开发服务器。

<path to sdk>/dev_appserver.py ./out/app_engine

然后在浏览器中导航到 https://127.0.0.1:8080(前提是它在同一台机器上)。

测试

您可以通过运行 grunt 来运行所有测试。

要仅运行 Python 测试,可以调用

grunt runPythonTests

部署

Docker

这允许它在机器上设置,并通过同一本地网络由其他机器访问以进行测试。

Dockerfile 下载到新文件夹,并按照 Dockerfile 中的说明进行操作。

手动设置

以下说明是在 Ubuntu 14.04、Python 2.7.6 和 Go 1.6.3 上执行的。

  1. 克隆 AppRTC 仓库
  2. 按照 Collider 指令 进行所有步骤,然后继续第 3 步。
  3. 根据项目页面上的 说明 安装并启动 Coturn TURN 服务器。
  4. 打开 src/app_engine/constants.py 并执行以下操作

碰撞器

  • 如果使用 Google Cloud Engine VM 作为碰撞器
    • WSS_INSTANCE_HOST_KEYWSS_INSTANCE_NAME_KEYWSS_INSTANCE_ZONE_KEY 更改为您的 VM 实例对应的值,这些值可以在 Google Cloud Engine 管理控制台中找到。
  • 否则,如果您使用其他 VM 托管解决方案
    • WSS_INSTANCE_HOST_KEY 更改为碰撞器监听的主机名和端口号,例如 localhost:8089otherHost:443

TURN/STUN

  • 如果您直接使用 TURN 和 STUN 服务器

    或者

    • 注释掉 ICE_SERVER_OVERRIDE = None,然后在下面三行取消注释 ICE_SERVER_OVERRIDE = [ { "urls":...] 并在 src/app_engine/constants.py 中填写您的 TURN 服务器详细信息。例如。
    ICE_SERVER_OVERRIDE = [
      {
        "urls": [
          "turn:hostnameForYourTurnServer:19305?transport=udp",
          "turn:hostnameForYourTurnServer:19305?transport=tcp"
        ],
        "username": "TurnServerUsername",
        "credential": "TurnServerCredentials"
      },
      {
        "urls": [
          "stun:hostnameForYourStunServer:19302"
        ]
      }
    ]
    
    • 或者

    app.yaml 中设置逗号分隔的 STUN 服务器列表。例如。

    ICE_SERVER_URLS: "stun:hostnameForYourStunServer,stun:hostnameForYourSecondStunServer"
    
  • 否则,如果您使用 ICE 服务器提供商 [1]

    • ICE_SERVER_BASE_URL 更改为您的 ICE 服务器提供商的主机。
    • ICE_SERVER_URL_TEMPLATE 更改为路径或空字符串,具体取决于您的 ICE 服务器提供商是否有特定的 URL 路径。
    • ICE_SERVER_API_KEY 更改为 API 密钥或空字符串,具体取决于您的 ICE 服务器提供商是否需要 API 密钥才能访问它。
    ICE_SERVER_BASE_URL = 'https://appr.tc'
    ICE_SERVER_URL_TEMPLATE = '%s/v1alpha/iceconfig?key=%s'
    ICE_SERVER_API_KEY = os.environ.get('ICE_SERVER_API_KEY')
    

8. 使用 grunt build 构建 AppRTC 然后部署/运行

  • 如果您在本地使用 Google App Engine 开发服务器(用于开发/测试目的)

    • 使用 Google App Engine SDK 提供的 dev appserver 启动它 pathToGcloudSDK/platform/google_appengine/dev_appserver.py out/app_engine/
  • 否则,如果您在 Google Cloud 中的 Google App Engine 上运行(生产环境)

9. 打开一个启用 WebRTC 的浏览器,并导航到 https://127.0.0.1:8080https://[YOUR_VERSION_ID]-dot-[YOUR_PROJECT_ID](如果为开发/测试目的在碰撞器上禁用了 TLS,则将 ?wstls=false 添加到 URL 中)。

高级主题

启用本地日志记录

请注意,当在 Google App Engine 上运行并使用隐式服务账户时,日志记录会自动启用。

默认情况下,从开发服务器到 BigQuery 的日志记录被禁用。日志信息会在控制台上显示。除非您正在修改分析 API,否则您不需要启用远程日志记录。

在本地运行时,将日志记录到 BigQuery 需要一个包含服务账户凭据的 secrets.json 文件,这些凭据指向启用了 BigQuery 的 Google 开发者项目。请勿将 secrets.json 提交到仓库。

为了在 Google 开发者控制台为您的项目生成 secrets.json 文件

  1. 转到项目页面。
  2. APIs & auth 选项下选择 Credentials
  3. 确认已存在 Service Account 或通过选择 Create new Client ID 创建它。
  4. Service Account 区域选择 Generate new JSON key 以创建并下载 JSON 凭据。
  5. 将下载的文件重命名为 secrets.json 并将其放置在包含 analytics.py 的目录中。

Analytics 类检测到 AppRTC 在本地运行时,所有数据都会记录到 dev 数据集中的 analytics 表中。您可以通过遵循 Bootstrapping/Updating BigQuery 中的说明来启动 dev 数据集。

BigQuery

在 App Engine 上运行时,Analytics 类将记录到由 app.yaml 中定义的任何项目的 prod 数据集中的 analytics 表中。

模式

bigquery/analytics_schema.json 包含 BigQuery 表中使用的字段。可以添加新字段到模式并更新表。但是,字段 不能 重命名或删除。在更新生产表时应小心,因为撤回模式更新是困难的。

通过运行以下命令从模式更新 BigQuery 表:

bq update -t prod.analytics bigquery/analytics_schema.json

启动

使用以下命令初始化所需的 BigQuery 数据集和表:

bq mk prod
bq mk -t prod.analytics bigquery/analytics_schema.json

[1] ICE 服务器提供程序 AppRTC 默认使用 ICE 服务器提供程序来获取 TURN 服务器。之前我们使用了一个 按需计算引擎服务(它根据连接用户的地理位置在附近创建 TURN 服务器实例,并将它们存储在共享内存中)和一个带有 REST API 的 web 服务器,API 描述在 draft-uberti-rtcweb-turn-rest-00 中。现在这已被 Google 服务取代。从 AppRTC 的角度来看,它们是相似的,但具有不同的 响应格式

无运行时依赖