为 WebRTC 应用程序实现我们自己的 STUN/TURN 服务器 [重复]
Posted
技术标签:
【中文标题】为 WebRTC 应用程序实现我们自己的 STUN/TURN 服务器 [重复]【英文标题】:Implementing our own STUN/TURN server for WebRTC Application [duplicate] 【发布时间】:2014-04-09 15:35:06 【问题描述】:我正在开发一个 webrtc 应用程序,并且必须实现以下 TURN 服务器。
https://code.google.com/p/rfc5766-turn-server/
我正在学习本教程。
http://www.dialogic.com/den/developer_forums/f/71/t/10238.aspx
它说在创建 RTCPeerConnection 的 javascript 代码中引用 TURN 服务器,如下所示。
var pc_config = "iceServers": ["url": "stun:stun.l.google.com:19302",
"url":"turn:<turn_server_ip_address>", "username":"my_username", "credential":"my_password"];
pc_new = new webkitRTCPeerConnection(pc_config);
我有点困惑,为什么我们要引用 Google 的公共 STUN 服务器。我以为 RFC5766 TURN 服务器里面有 STUN。
RFC5766 是否只是 TURN 服务器?而不是 STUN 服务器?我们不能使用 Google 提供的 STUN 服务器来实现我们自己的 STUN 服务器吗?
对不起,这么幼稚的问题。我是 WebRTC 新手。
谢谢。
【问题讨论】:
【参考方案1】:TURN是STUN的扩展,所以TURN服务器也有STUN功能。
https://code.google.com/p/rfc5766-turn-server/ 也可用作 STUN,因此您可以尝试编写如下内容:
var pc_config =
"iceServers": [
"url":"turn:my_username@<turn_server_ip_address>",
"credential":"my_password"
]
;
pc_new = new webkitRTCPeerConnection(pc_config);
【讨论】:
构建我们自己的 TURN 和 STUN 服务器实现(不使用预构建服务器),您有什么建议? @NikhilKinkar 我不建议这样做,因为它可能需要很长时间我建议使用 CoTurn 开源服务器,因为它是现在最流行的服务器 @Nikhil Kinkar 您是否设置了自己的 TURN 和 STUN 服务器? 现在是 2022 年,你应该使用 github.com/coturn/coturn(这是更新后的后续项目)【参考方案2】:最近我正在捕获我的 Kurento WebRTC 服务器数据包,并意识到它一直在使用这个 www.stunprotocol.org
域进行 STUN 请求。一个名为stuntman
的工具可以为你创建一个简单的STUN服务器。
只需在 Linux 主机上执行以下操作:
sudo apt-get update
sudo apt-get install stuntman-server
stunserver --mode full --primaryinterface 100.101.102.103
(应将 100.101.102.103 替换为您的 IP 地址)
打开This Link 测试您的STUN 服务器。
例如STUN 或 TURN URI:
stun:100.101.102.103:3478
通过我提到的这个过程,我的机器上一切正常。
【讨论】:
以上是关于为 WebRTC 应用程序实现我们自己的 STUN/TURN 服务器 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
WebRTC STUN 服务器如何反馈 SDP 和 ICE 候选人?
我们可以将 google stun 服务器(nodejs webrtc.io-client 的默认设置)用于商业应用程序吗?
如何自托管不依赖 WebRTC STUN 服务器 stun.l.google.com:19302?