首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

未捕获DOMException:无法构造“”RTCPeerConnection“”:当URL方案为"turn“或"turns”时,用户名和凭据都是必需的。“

基础概念

RTCPeerConnection 是 WebRTC(Web Real-Time Communication)API 的一部分,用于在浏览器之间建立点对点的连接,实现音频、视频和数据的实时传输。WebRTC 提供了一种无需插件的方式,使浏览器能够进行实时通信。

问题原因

当你尝试使用 RTCPeerConnection 并且 URL 方案为 "turn" 或 "turns" 时,需要提供用户名和凭据。这是因为 TURN(Traversal Using Relays around NAT)服务器用于在 NAT(网络地址转换)或防火墙后面转发数据,以便两个对等端可以建立连接。为了安全起见,TURN 服务器需要验证客户端的身份。

解决方法

要解决这个问题,你需要提供 TURN 服务器的用户名和凭据。以下是一个示例代码,展示了如何配置 RTCPeerConnection 以包含这些凭据:

代码语言:txt
复制
const iceServers = [
  {
    urls: 'turn:turn.example.com',
    username: 'yourUsername',
    credential: 'yourCredential'
  }
];

const peerConnection = new RTCPeerConnection({ iceServers });

应用场景

这种配置通常用于以下场景:

  1. NAT 穿透:当两个对等端位于不同的网络后面,且有 NAT 或防火墙阻挡时。
  2. 防火墙穿透:当两个对等端位于有防火墙的网络后面时。
  3. 移动设备:在移动设备上,由于网络环境的复杂性,通常需要 TURN 服务器来辅助连接。

参考链接

通过提供正确的 TURN 服务器凭据,你可以成功构造 RTCPeerConnection 对象,并实现点对点的实时通信。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WebRTC中信令内网穿透技术 STUN TURN

在这种方法中,需要交换关键信息是多媒体会话描述,它指定了建立媒体连接所必需传输媒体配置信息。...Eve从Alice获取candidate消息,她调用addIceCandidate(),将candidate添加到远程对等描述中。...WebRTC应用 RTCPeerConnection 构造函数第一个参数 iceServers 中会指定STUNTURN服务器URL。...一旦RTCPeerConnection具有该信息,RTCPeerConnection就可以使用ICE框架计算出端点之间最佳路径,必要时会使用STUNTURN服务器。...STUN NAT设备提供内网IP地址,以便在专用本地网络中使用,但是这个地址不能在外部使用。对于WebRTC而言,没有公共地址,点与点之间就无法直接进行通信。

5.2K80

Web前端WebRTC攻略(一) 基础介绍

要完成一个RTCPeerConnection需要设置ICE Server(STUN服务器TURN服务器),在连接前还要交换信息,为此需要借助一个信令服务器(signaling server)来进行,主要交换...但这里有个问题,两个浏览器不通过服务器建立PeerConnection,它们怎么知道彼此存在呢?进一步讲,它们该怎么知道对方网络连接位置(IP/端口等)呢?支持何种编解码器?...ICE Canidate(ICE 候选者):包含远端通信使用协议、IP 地址端口、候选者类型等信息。 STUN/TURN:STUN实现P2P型连接,TRUN实现中继型连接。两者实现均有标准协议。...所以你能看到,目前绝大多数实施通讯厂商,在web浏览器侧方案基本都是WebRTC了。 兼容性 标准发展,必然推动兼容支持性提升。...这里有个关键在于:别光看caniuse浏览器,还要看移动端各定制浏览器是否支持,我这里没有广泛兼容性测试数据。 但可以给出一点结论,WebRTC在最新IOS安卓手Q微信都是可以使用

2.4K31
  • WebRTC 教程(2)

    getUserMedia 结构 getUserMedia 方法会提示用户是否有使用一个多媒体权限,其输入参数是音频视频参数,这些参数都是 bool 类型,你可以根据你需求选择这些参数,如是否请求一个音视频流...RTCPeerConnection 结构 在 WebRTC 中可以使用 RTCPeerConnection()构造函数,来获取一个端到端间最新建立 RTC 连接。...ICE Agents,来跟 STUN TURN 服务器工作。...当你使用虚拟专用网(Virtual Private Network:VPN),你 IP 地址还是安全,但是当你使用了 WebRTC 后,WebRTC 就能通过 STUN/TURN 服务器获得到你公网...如果你使用是火狐浏览器,你就可以在 url 中输入about:config,并将media.peerconnection.enabled一值设置 false。

    1.4K10

    webrtc开发入门_统计简单应用

    WebRTC实时通信技术介绍 如何使用 媒体介绍 信令 STUNTURN介绍 对等连接提议/应答协商 数据通道 NAT防火墙穿透 简单应用 其它 WebRTC实时通信技术介绍 WebRTC实现了基于网页语音对话视频通话...(见下节) TURN服务器:在P2P失败进行转发。...onicecandidate事件回调 网络候选可用时,将会调用onicecandidate函数 在回调函数内部,甲乙将网络候选消息封装在ICE Candidate信令中,通过服务器中转,传递给对方...甲乙接收到对方通过服务器中转所发送过来ICE Candidate信令,将其解析并获得网络候选,将其通过PC实例addIceCandidate()方法加入到PC实例中 这样连接就创立完成了,可以向...RTCPeerConnection对象构造函数有一系列属性,最主要是iceServers属性,表示服务器地址列表。用于帮助透过NAT防火墙建立会话。

    1.1K10

    WebRTC介绍及简单应用

    WebRTC实时通信技术介绍 如何使用 媒体介绍 信令 STUNTURN介绍 对等连接提议/应答协商 数据通道 NAT防火墙穿透 简单应用 其它 WebRTC实时通信技术介绍 WebRTC实现了基于网页语音对话视频通话...(见下节) TURN服务器:在P2P失败进行转发。...,并为其添加onicecandidate事件回调 网络候选可用时,将会调用onicecandidate函数 在回调函数内部,甲乙将网络候选消息封装在ICE Candidate信令中,通过服务器中转...其实WebRTC定义了两组主要功能,分别是:媒体捕获(getUserMedia(),前面已介绍)、媒体传输。对等连接提议/应答协商概念是媒体传输核心。...RTCPeerConnection对象构造函数有一系列属性,最主要是iceServers属性,表示服务器地址列表。用于帮助透过NAT防火墙建立会话。

    6.1K20

    WebRTC实现p2p视频通话

    for NAT,NAT会话穿越应用程序)是一种网络协议,它允许位于NAT(多重NAT)后客户端找出自己公网地址,查出自己位于哪种类型NAT之后以及NAT某一个本地端口所绑定Internet...当在专用网内部一些主机本来已经分配到了本地IP地址,但现在又想因特网上主机通信,于是乎在路由器上安装NAT软件。装有NAT软件路由器叫做NAT路由器,它可以通过一个全球IP地址。...使所有使用本地地址主机在外界通信,这种通过使用少量公有IP地址代表较多私有IP地址方式,将有助于减缓可用IP地址空间枯竭 3.WebRTC穿墙 目前常用针对UDP连接...external-ip=39.105.185.198 #指定云主机公网IP地址 user=aaaaaa:bbbbbb #访问 stun/turn服务用户名密码 realm...地址、用户密码 输入信息分别是: STUN or TURN URI turn:stun.xxx.cn 用户名为: aaaaaa 密码: bbbbbb STUN

    6.7K31

    iOS下WebRTC音视频通话(一)WebRTC介绍WebRTC 过程

    在iOS下做IM功能,难免都会涉及到音频通话视频通话。QQ中QQ电话视频通话效果就非常好,但是如果你没有非常深厚技术,也没有那么大团队,很难做到QQ那么快速稳定通话效果。...3、RTCPeerConnection添加RTCMediaStream,而RTCMediaStream内包含视频音频轨迹,只是做一些配置,然后WebRTC内部按照你配置做音频、视频采集。...(这些都是在采集端设置) 4、视频轨迹设置渲染容器,便于开始音视频通话后,将实时视频画面渲染到视图上。...STUN服务器、TURN服务器地址其实就是个url而已:stun:stun.l.google.com:19302,turn:numb.viagenie.ca,其中STUN服务器TURN服务器可以在自家服务上创建...关于Candidate,是对本端网络通信能力一种描述。对于UDP/STUN协议,Candidate仅包含IP及端口信息,对于TURN,包含TURN serverIP,端口,以及用户名密码等。

    3.8K40

    WebRTC现状与未来:专访W3CWebRTC主席Bernard Aboba

    构造函数所有东西都非常类似于WebSockets。在构造函数WebTransport构造函数中,给它提供一个URL,然后将获得一个WebTransport。...现在,在过去情况下,我们不得不这样做 RTCQuicTransport,因为gQUIC无法与RTP / RTCP STUNTURN复用。IETF QUIC可以复用。...关于SVC理解之一是,在VP8VP9中都是必需-解码器必须支持这一点。因此,没有什么可以谈判。编码器可以将其推出。如果不希望,SFU甚至不必丢弃[SVC层],但这显然更好。...例如,人们问我“如何一起使用这些东西?”,如果要进行游戏流电影流之类东西,则可以连接WebTransport来接收编码媒体。...在我实验中,我发现堆栈中有很多固有延迟,很难使这些东西实时运行。 Bernard: 我们看到许多场景都涉及本地处理。举个例子,您已经捕获了,并且想要在将其发送出去之前在捕获媒体上进行操作。

    97920

    JavaScript 是如何工作:WebRTC 对等网络机制!

    Web 应用程序需要一些数据资源,它从某个服务器获取数据资源,仅此而已。...目前RFC 3489协议已被RFC 5389协议所取代,新协议中,将STUN定义一个协助穿越NAT工具,并不独立提供穿越解决方案。它还有升级版本RFC 7350,目前正在完善中。...如果商定最佳 ICE 候选方案过程失败(有时确实由于使用了防火墙 NAT 技术而发生这种情况),那么可以使用 TURN 服务器作为中继。...使用 TURN 回退进行通信,每个对等方不再需要知道如何相互联系传输数据。 相反,它们需要知道公共 TURN 服务器在通信会话期间发送接收实时多媒体数据。...RTCPeerConnectionRTCPeerConnection 对象允许用户在两个浏览器之间直接通讯 ,你可以通过网络将捕获音频视频流实时发送到另一个 WebRTC 端点。

    2.3K40

    仿照AirDrop(隔空投送)优雅地在局域网中传输文件

    TURN(Traversal Using Relay NAT)即通过Relay方式穿越NAT,由于网络复杂性,两个设备都位于对称型NAT后面存在防火墙限制时时,直接P2P连接通常难以建立,而设备无法直接连接...实际上是一种中转方案,并且因为是即将传输设备地址,避免了STUN应用模型下出口NAT对RTP/RTCP地址端口号任意分配,但无论如何就是相当于TURN服务器成为了中间人,使得设备能够在无法直接通信情况下进行数据传输...,那么使用TURN服务器就会引入一定延迟带宽消耗,因为数据需要经过额外中间步骤,所以TURN服务器在WebRTC中通常被视为备用方案直接点对点连接无法建立时才使用,并且通常没有公共服务器资源可用...fileName; a.click(); URL.revokeObjectURL(url); }; 在后来补充了一下多文件传输方案,具体思路是构造ArrayBuffer,其中前12个字节表示当前块所属文件...无法成功进行NAT穿越,如果想在公网发送数据还是需要经过TURN转发,那么都是通过TURN转发了还是需要走我们服务器中继,那么我们不如直接借助WebSocket传输了,WebSocket也是全双工信道

    51510

    从0开始构建一个Oauth2Server服务 移动本机应用程序

    当前最佳做法是将授权流程与 PKCE 一起使用,同时启动外部浏览器,以确保本机应用程序无法修改浏览器窗口检查内容。 许多网站都提供移动 SDK 来您处理授权过程。...该链接应构建服务授权端点完整 URL。 客户端首先创建所谓 PKCE“代码验证器”。这是一个加密随机字符串,使用字符A-Z、a-z、0-9标点字符-....iOS Android 都为应用程序提供注册自定义 URL 方案能力,这些方案可用作重定向 URL。这有时在平台文档中也称为“深度链接”。...这两个平台还允许应用程序注册自己,以便在访问匹配 URL 模式启动(iOS 上“通用链接”安卓上“应用程序链接”)。...这两种方法在使用应用程序时提供大致相同体验,但“通用/应用程序链接”方法在用户安装应用程序情况下访问 URL 提供更好回退行为。

    20230

    零基础入门:基于开源WebRTC,从0到1实现实时音视频聊天功能

    简单来说:其目的就是解决对称 NAT 无法穿越问题,在 STUN 分配公网 IP 失败后,可以通过 TURN 服务器请求公网 IP 地址作为中继地址。...也就是说 WebRTC 尝试本地连接不通,会尝试通过反射候选者获得 IP 地址端口进行连接; 3)中继候选者:表示是中继服务器 IP 地址与端口,即通过服务器中转媒体数据。... WebRTC 客户端通信双方无法穿越 P2P NAT ,为了保证双方可以正常通讯,此时只能通过服务器中转来保证服务质量了。... NAT 穿越不成功,则会通过 Relay server (TURN)中转。...从图中不难看出,假设 PeerA 发起方,PeerB 接收方要实现 WebRTC 点对点实时音视频通信,信令(Signal)服务器是必要,以管理房间信息以及转发网络信息媒体信息

    3.2K10

    利用SlackTURN服务器访问Slack内部网络

    STUN协议(Simple Traversal of UDP Through NATs),在RFC3489中定义一种简单NAT穿透解决方案,即用UDP实现简单NAT穿透方法。...因此,对大多WebRTC系统来说,一个关键因素是防火墙NAT设备不允许对等实体之间进行直接媒体流量通信交互,那么就需要有一个TURN服务器在对等实体之间来中继消息。...1、可以连接到AWS元数据服务端http://169.254.169.254获取一些临时身份识别访问管理凭据,如下图; 2、可以连接到Slack本地主机探测一些曝露在互联网上开放端口,如node...; 3、在Slack中点Call发起一个通话; 4、SlackTURN服务器发起对/api/screenhero.rooms.create请求,响应消息中包含了临时用户名密码信息,以及TURN主机名端口...演示视频 视频展示了以下几个方面: 获取TURN服务器客户端生成凭据; 利用我们自己IP地址测试TURN服务器到互联网端中继; 连接到Slack内部网络架设在AWS上元数据服务。

    2K10

    实时音视频入门学习:开源工程WebRTC技术原理使用浅析

    是一个支持网页浏览器进行实时语音对话视频对话技术方案。从前端技术开发视角来看,是一组可调用API标准。...then(handleSuccess).catch(handleError); RTCPeerConnection:通过加密带宽管理工具启用音频视频通话 // 允许 RTC 服务器配置。...,挂到页面Video元素上     document.getElementById("myVido").srcObject=stream }) 捕获本地视频媒体流显示结果截图: 每个新客户端连接创建...RTCPeerConnection对象: // stunturn服务器  const iceServer = {     "iceServers": [{         urls:"stun:stun.l.google.com...WebRTC缺点主要是: 1)缺乏服务器方案设计部署。 2)传输质量难以保证。

    1.7K30

    十个最常见 Web 网页安全漏洞之首篇

    攻击只需要 Web 浏览器而且最低级别是高级编程工具,可攻击性最高。 可检测性 - 检测威胁有多容易?最高是显示在 URL,表单错误消息上信息,最低是源代码。...十大安全漏洞 SQL 注入 跨站脚本 身份验证和会话管理中断 不安全直接对象引用 跨站点请求伪造 安全配置错误 不安全加密存储 无法限制 URL 访问 传输层保护不足 未经验证重定向转发 注...会话通过注销浏览器突然关闭结束,这些 cookie 应该无效,即每个会话应该有一个新 cookie。 如果 cookie 失效,则敏感数据将存在于系统中。...易受攻击对象 在 URL 上公开会话 ID 可能导致会话固定攻击。 注销登录前后会话 ID 相同。 会话超时正确实现。 应用程序每个新会话分配相同会话 ID。...不安全直接对象引用 描述 开发人员公开对内部实现对象引用(例如 URL FORM 参数中文件,目录数据库键),就会发生这种情况。

    2.5K50

    WebRTC现状未来:专访W3C WebRTC Chair Bernard Aboba(上)

    捕获、流输出相关规范,包括媒体捕获流、屏幕捕获、从DOM元素中捕获媒体、媒体流图像捕获、媒体流录制、音频输出设备内容提示。 3. WebRTC-NV,WebRTC“下一个版本”。...在当前用法中,有模糊之处,因为“NV”可能指的是RTCPeerConnection现有捕获应用程序接口扩展,或者与RTCPeerConnection现有捕获应用程序接口无关应用程序接口,如WebTransport...我认为可插入流是WebRTC PC(其编码版本)扩展,它编码版本。这些都是在假设你有RTCPeerConnection基础上。...然后, Jan-Ivar 这个新模型创建了一个单独规范,可以解决所有这些问题。棘手是,这是一个非常不同模式。人们习惯于应用选择器,如何过渡到新模式?这可能从用户习惯来看需要很长时间。...您从一个RTCQuicTransport构造一个RTCQuicTransport,它不会与您对等连接组件复用。 它在一个单独端口上。

    84330

    WebRTC安全问题:私有IP与mDNS

    除非用IP地址作为URL,否则你无法通过JS嗅探DNS解析过程,也不知道本机网络IP。通过这种机制,网站只知道你公网IP,却不知道你私有IP,也就是NAT内网中你网卡IP。...对象 指定iceServers空,这样排除掉代理IP 创建DataChanneloffer激活ICE候选者 监听icecandidate事件,拿到本机IP 使用: ---- 私有IP泄露影响...然而,作为被写入前额叶神经网络ROM区固件,收集用户数据已经是各大厂商不得不去执行思想钢印,chrome就统计了所有网站RTCPeerConnection构造函数调用次数,得出了惊人结果: https...当然你也可以将DNS服务部署到某一台终端上,但mDNS是一种更好方案,它避免了DNS服务器繁琐安装配置,开箱即用,因为它是分布式DNS。...所以理想情况下,需要获取私有IP时候,浏览器应该提示用户是否授权,这样才是兼顾性能与安全性解决方案

    2.7K20
    领券