1 个不稳定版本
0.0.0 | 2022 年 7 月 1 日 |
---|
#12 在 #dev-server
710KB
13K SLoC
AppRTC 演示代码
注意:该项目不再通过 https://appr.tc 提供。请参阅 Docker 了解本地开发/测试部署的说明。
开发
有关在 webrtc github 仓库中开发的详细信息,请参阅 WebRTC GitHub 仓库开发者指南。
可以通过访问 https://127.0.0.1:8080 来访问开发 AppRTC 服务器。
在本地运行 AppRTC 需要 Google App Engine SDK for Python、Node.js 和 Grunt。
请按照 Node.js 网站、Python PIP 和 Grunt 网站 上的说明进行安装。
Node.js 和 Grunt 可用后,您可以从项目根目录运行 npm install
和 pip 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 上执行的。
- 克隆 AppRTC 仓库
- 按照 Collider 指令 进行所有步骤,然后继续第 3 步。
- 根据项目页面上的 说明 安装并启动 Coturn TURN 服务器。
- 打开 src/app_engine/constants.py 并执行以下操作
碰撞器
- 如果使用 Google Cloud Engine VM 作为碰撞器
- 将
WSS_INSTANCE_HOST_KEY
、WSS_INSTANCE_NAME_KEY
和WSS_INSTANCE_ZONE_KEY
更改为您的 VM 实例对应的值,这些值可以在 Google Cloud Engine 管理控制台中找到。
- 将
- 否则,如果您使用其他 VM 托管解决方案
- 将
WSS_INSTANCE_HOST_KEY
更改为碰撞器监听的主机名和端口号,例如localhost:8089
或otherHost: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 App Engine SDK 提供的 dev appserver 启动它
-
否则,如果您在 Google Cloud 中的 Google App Engine 上运行(生产环境)
- 请确保您有 Google Cloud 账户并已启用 Google App Engine。
- 下载 Google Cloud SDK 并初始化它.
- 在 out/app_engine 目录中执行以下命令以部署您的 AppRTC 应用程序
gcloud app deploy --project [YOUR_PROJECT_ID] -v [YOUR_VERSION_ID]
(您可以在 Google 云控制台中找到 [YOUR_PROJECT_ID] 和 [YOUR_VERSION_ID])。
9. 打开一个启用 WebRTC 的浏览器,并导航到 https://127.0.0.1:8080
或 https://[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
文件
- 转到项目页面。
- 在 APIs & auth 选项下选择 Credentials。
- 确认已存在 Service Account 或通过选择 Create new Client ID 创建它。
- 从 Service Account 区域选择 Generate new JSON key 以创建并下载 JSON 凭据。
- 将下载的文件重命名为
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 的角度来看,它们是相似的,但具有不同的 响应格式。