webrtc - 在生产中运行时没有“中继”icecandidate
问题描述
这是我在本地的设置:
- 前端:反应
- 后端:节点
- 后端连接到托管 Kurento + Coturn (Ubuntu 16 xenial) 的远程服务器 (Digital Ocean)
场景 1 ✅</h2>
在本地拨打电话时:
- 来电者可以发起通话
- 被叫可以连接
- 两者都收到了“接力”候选人(通过 webrtc 日志确认)
场景 2 ❌</h2>
当我将后端部署到Heroku并将前端部署到Firebase 托管进行测试时:
- 呼叫者可以发起呼叫(连接处于连接状态)
- 被调用者无法连接(连接处于“正在连接”状态)
- 呼叫者收到“中继”候选人但被呼叫者没有(被呼叫者只收到“主机”,“srflx”候选人)
场景 3 ❌</h2>
当我尝试将本地前端与Heroku 后端连接时
- 来电者可以发起通话
- 呼叫者无法连接(连接处于“正在连接”状态)
- 两人都收到了“接力”候选人(?!)
注意:他们都使用相同的远程 Kurento + Coturn。我一直在阅读 coturn + Kurento 的日志,但还不知道为什么。期待任何评论。谢谢!
更新1:
- 添加一些调试代码后,我发现在 Heroku 上,这些事件都没有在 WebRTCEndpoint MediaElement 上触发(但它们是在本地触发的)
ConnectionStateChanged
:,MediaStateChanged
更新 2:
- 我比较了工作版的 Kurento 日志和非工作版的 Kurento 日志,发现在工作版上,多了一个日志:
0x00007faa8a566700 info kmsutils kmsutils.c:518 kms_utils_pad_monitor_gaps() <'':sink_video_default> Add probe: DISCONT buffers and GAP events
当调用者更改共享窗口(屏幕共享)时也会出现此日志
解决方案
推荐阅读
- python - 刻度的第二个刻度是 python/matplotlib 中相同位置的第一个刻度的函数
- javascript - 过滤嵌套的嵌套在猫鼬填充
- mysql - MySQL 限制每列值的行数
- flutter - Flutter - 当 Cohost 退出直播时,Agora 直播对所有人都结束
- amazon-web-services - aws redshift 表中的唯一键/主键
- javascript - 在发出时返回 PointerEvent 对象而不是子数据
- angularjs - 当我正在做的事情完全正确时,Angular JS 1.6 帮助即服务会导致 UNK 提供者
- html - VBA按钮单击具有相同的类(无ID,无类名)
- sql - 有没有办法使用 SQL Developer 中的查询生成的数据自动填写 PDF 表单?
- pycharm - 如何在pycharm中向黑色格式化程序添加其他设置