You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WebRTC中ICE连接持续处于FAILED状态问题求助

WebRTC ICE连接失败问题排查与修复

核心问题分析

从代码配置和场景来看,导致ICE连接卡在FAILED状态的关键问题有两个:

1. 双方ICE配置不一致

  • Offer方强制启用Relay模式(ICETransportPolicyRelay),仅配置TURN服务器,但Accept方只配置了STUN服务器,无任何TURN配置。
  • 这种情况下,Offer方只会收集TURN中继候选地址,而Accept方无法获取中继候选,双方没有可匹配的候选地址对,必然导致ICE连接失败。

2. TURN服务器配置未同步

即使Offer方的TURN服务器可达,Accept方没有相同的TURN服务器凭证和地址,无法与TURN服务器交互获取中继地址,无法完成Relay模式下的连接建立。


修复步骤

步骤1:同步双方ICE服务器配置

修改acceptor.go中的PeerConnection配置,添加与Offer方完全一致的TURN服务器信息,同时保留STUN以支持更多场景:

peerConnection, err := webrtc.NewPeerConnection(webrtc.Configuration{
    ICEServers: []webrtc.ICEServer{
        // 保留STUN服务器
        {
            URLs: []string{"stun:stun2.l.google.com:19302"},
        },
        // 添加与Offer方一致的TURN服务器
        {
            URLs:       []string{"turn:global.relay.metered.ca:80?transport=tcp"},
            Username:   "bd1ed97e211e0e351fad721b",
            Credential: "rsot1XO4eSJXISCG",
        },
        {
            URLs:       []string{"turn:global.relay.metered.ca:443?transport=tcp"},
            Username:   "bd1ed97e211e0e351fad721b",
            Credential: "rsot1XO4eSJXISCG",
        },
    },
    // 可选:若无需强制Relay,可注释此行,让ICE自动选择最优路径
    // ICETransportPolicy: webrtc.ICETransportPolicyRelay,
})

步骤2:开启调试日志排查细节

在代码初始化时添加Pion调试日志,获取ICE交互的详细错误信息:

import "github.com/pion/logging"

// 创建PeerConnection前配置日志
logger := logging.NewDefaultLoggerFactory()
logger.DefaultLogLevel = logging.LogLevelDebug

peerConnection, err := webrtc.NewPeerConnection(webrtc.Configuration{
    // 原有配置...
}, webrtc.SetLoggerFactory(logger))

通过调试日志可查看TURN服务器认证状态、候选地址收集情况、连接尝试失败的具体原因。

步骤3:本地连接验证(可选)

如果是本地测试,可先移除ICETransportPolicyRelay配置,让ICE优先使用本地候选地址,验证信令和数据通道逻辑是否正常,再逐步切换到Relay模式排查TURN问题。

步骤4:TURN服务器有效性验证

虽然telnet能连通TURN服务器,仍需进一步确认:

  • TURN服务器的用户名和凭证是否过期
  • 验证TURN服务器是否能正常生成中继候选地址

额外优化点

  • 信令服务器中,当SDP不存在时返回HTTP 404状态码,而非纯文本,客户端可更准确判断状态
  • 增加连接超时后的智能重试逻辑,替代当前固定次数重试的局限性

内容的提问来源于stack exchange,提问作者Dumb_Pegasus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 17:32:02