这是我在本地的设置:
- 前端:反应
- 后端:节点
- 后端连接到托管 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
当调用者更改共享窗口(屏幕共享)时也会出现此日志