Webrtc 否";“继电器”;在生产环境中运行时的ICE候选者

Webrtc 否";“继电器”;在生产环境中运行时的ICE候选者,webrtc,kurento,stun,turn,videocall,Webrtc,Kurento,Stun,Turn,Videocall,以下是我在本地的设置: 前端:反应 后端:节点 后端连接到托管Kurento+Coturn(Ubuntu 16 xenial)的远程服务器(数字海洋) 情景1✅ 在本地打电话时: 呼叫方可以初始化呼叫 被呼叫方可以连接 两人都收到了“中继”候选者(通过webrtc日志确认) 情景2❌ 当我将后端部署到Heroku,将前端部署到Firebase hosting进行测试时: 呼叫方无法初始化呼叫(连接处于已连接状态) 被调用方无法连接(连接处于“连接”状态) 呼叫者收到“中继”候选者,但被

以下是我在本地的设置:

  • 前端:反应
  • 后端:节点
  • 后端连接到托管Kurento+Coturn(Ubuntu 16 xenial)的远程服务器(数字海洋)
情景1✅ 在本地打电话时:

  • 呼叫方可以初始化呼叫
  • 被呼叫方可以连接
  • 两人都收到了“中继”候选者(通过webrtc日志确认)
情景2❌ 当我将后端部署到Heroku,将前端部署到Firebase hosting进行测试时:

  • 呼叫方无法初始化呼叫(连接处于已连接状态)
  • 被调用方无法连接(连接处于“连接”状态)
  • 呼叫者收到“中继”候选者,但被呼叫者没有(被呼叫者只收到“主机”、“srflx”候选者
情景3❌ 当我尝试将本地前端连接到Heroku后端时

  • 呼叫方可以初始化呼叫
  • 调用方无法连接(连接处于“连接”状态)
  • 两人都收到了“中继”候选人(?)
注意:它们都使用相同的远程Kuranto+Coturn。我一直在读coturn+Kuranto的日志,但还不知道为什么。期待任何评论。谢谢


更新1:
  • 添加一些调试代码后,我发现在Heroku上,这些事件都没有在WebRTCEndpoint MediaElement上触发(但它们是在本地触发的):
    ConnectionStateChanged
    MediaStateChanged
更新2:
  • 我比较了工作版本和非工作版本的Kurento日志,发现在工作版本上,有一个额外的日志:
0x00007faa8a566700信息kmsutils kmsutils.c:518 kms\U utils\U pad\U monitor\U gaps()添加探测:中断缓冲区和间隙事件
当调用者更改共享窗口(屏幕共享)时,也会出现此日志

0x00007faa8a566700    info kmsutils                  kmsutils.c:518 kms_utils_pad_monitor_gaps() <'':sink_video_default>  Add probe: DISCONT buffers and GAP events