标签: stun

WebRTC STUN 服务器如何反馈 SDP 和 ICE 候选?

为了我,我正在逐步测试 WebRTC 程序。

我为无服务器 WebRTC 编写了一些测试站点。

http://webrtcdevelop.appspot.com/

其实用的是google的STUN服务器,只是没有部署信令服务器。

会话描述协议 (SDP) 是手动交换的,即在浏览器窗口之间复制粘贴。

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明 在此处输入图片说明

到目前为止,这是我用代码得到的结果:

'use strict';

var peerCon;
var ch;

$(document)
    .ready(function()
    {
        init();

        $('#remotebtn2')
            .attr("disabled", "");

        $('#localbtn')
            .click(function()
            {
                offerCreate();

                $('#localbtn')
                    .attr("disabled", "");
                $('#remotebtn')
                    .attr("disabled", "");

                $('#remotebtn2')
                    .removeAttr("disabled");
            });

        $('#remotebtn')
            .click(function()
            {
                answerCreate(
                    new RTCSessionDescription(JSON.parse($('#remote')
                        .val())));

                $('#localbtn')
                    .attr("disabled", "");
                $('#remotebtn')
                    .attr("disabled", "");

                $('#remotebtn')
                    .attr("disabled", "");
            });

        $('#remotebtn2')
            .click(function()
            {
                answerGet(
                    new RTCSessionDescription(JSON.parse($('#remote')
                        .val())));

                $('#remotebtn2')
                    .attr("disabled", "");
            });
    });


var init = function()
{
    //offer------
    peerCon =
        new RTCPeerConnection(
        {
            "iceServers": [ …
Run Code Online (Sandbox Code Playgroud)

html javascript p2p stun webrtc

6
推荐指数
1
解决办法
2639
查看次数

如何检查 TURN 服务器日志?

我已经安装了开源的 TURN 服务器(rfc5766-turn-server),我使用以下命令运行它 sudo turnserver -L my.domain.in -a -b /usr/local/etc/turnuserdb.conf -f -r domain.in

这是我在终端中得到的输出,

RFC 3489/5389/5766/5780/6062/6156 STUN/TURN Server
Version Citrix-3.1.5.0 'Arch Lector'
0:

==== Show them the instruments, Practical Frost: ====

0: TLS supported
0: DTLS supported
0: Redis is not supported
0: PostgreSQL is not supported
0: MySQL is not supported
0: OpenSSL version: fresh enough
0: TURN Network Engine version: 2.5

=====================================================

0: Config file found: /usr/local/etc/turnserver.conf
0: ERROR: Cannot add a listener address: qeee.rtbi.in
0: Config file …
Run Code Online (Sandbox Code Playgroud)

google-chrome stun webrtc

6
推荐指数
2
解决办法
1万
查看次数

WebRTC iceConnectionState 仍处于“检查”状态

我想创建简单的视频聊天应用程序。我在 Node.js 中使用 WebRTC 和 WebSockets。我想在同一个网络中连接两个设备,但 iceConnectionState 一直保持“检查”状态。可能是什么问题呢?

已编辑

服务器.js

//var uuid = require('uuid');

var fs = require('fs');
var webSocketServer = require('websocket').server;

var cfg = {
    ssl: false,
    port: 15555,
    ssl_key: '/etc/apache2/ssl/apache.key',
    ssl_cert: '/etc/apache2/ssl/apache.crt'
};

var httpServer = (cfg.ssl) ? require('https') : require('http');

var server = null;

if(cfg.ssl) {
    server = httpServer.createServer(
        {
            key: fs.readFileSync(cfg.ssl_key),
            cert: fs.readFileSync(cfg.ssl_cert)
        }, function() {} ).listen(cfg.port);
} else {
    server = httpServer.createServer().listen(cfg.port);
}

var wsServer = new webSocketServer({
    httpServer: server
});

rooms = {};

// …
Run Code Online (Sandbox Code Playgroud)

html javascript websocket stun webrtc

6
推荐指数
1
解决办法
5871
查看次数

如何使用 java 创建我自己的 STUN 或 TURN 服务器

我一直在开发一个使用WebRTC并用作Java Websocket信令服务器的视频聊天应用程序。

\n\n

该应用程序正在成功运行Tomcat

\n\n

目前我正在使用 \xe2\x80\x8b Google 的 STUN 服务器。

\n\n
\n

var pc_config = {"iceServers": [{"url":\n "stun:stun.l.google.com:19302"}]}; var pc = new\n RTCPeerConnection(pc_config);

\n
\n\n

我不想像上面那样在公共或第 3 方 STUN 服务器上进行中继。

\n\n

由于我的应用程序将发布到具有专用域的公共 Tomcat 服务器。我想使用/设置我自己的 STUN 或 TURN 服务器。

\n\n

我可以用 Tomcat 做到这一点吗?
\n是否有任何稳定的开源库可用于此?

\n\n

如果有的话,请给我举一个例子。

\n

java tomcat stun webrtc turn

6
推荐指数
2
解决办法
6970
查看次数

Ubuntu 上的配置 CoTurn 不起作用

在使用 Chrome 62.0.3202.89 的 MacBook 10.12.6 上使用 Trickle ICE 测试 STUN & TURN 服务器 (CoTurn) 时,我没有得到任何候选者:

\n\n

https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

\n\n

和:

\n\n
stun:<ip-adres>:3478\nturn:<ip-adres>:3478 [username:test]    \n
Run Code Online (Sandbox Code Playgroud)\n\n

在 Digital Ocean 上,我创建了一个 Droplet Ubuntu 16.04.3 x64 并安装了 CoTurn 版本 4.5.0.3,执行以下操作:

\n\n
sudo apt-get update\nsudo apt-get install coturn\n
Run Code Online (Sandbox Code Playgroud)\n\n

默认情况下,防火墙处于非活动状态。

\n\n

接下来,我编辑sudo vi /etc/turnserver.conf并给出以下选项:

\n\n
fingerprint\nlt-cred-mech\nuser=username:test\nrealm=<ip-adres>\nlistening-ip=<ip-adres>\nrelay-ip=<ip-adres>\nexternal-ip=<ip-adres>\n
Run Code Online (Sandbox Code Playgroud)\n\n

接下来,我编辑sudo vi /etc/default/coturn并取消注释该选项:

\n\n
TURNSERVER_ENABLED=1\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后我启动 Coturn 守护进程:

\n\n
sudo systemctl start coturn\nsudo systemctl status coturn\n
Run Code Online (Sandbox Code Playgroud)\n\n

这给出了输出:

\n\n
\xe2\x97\x8f coturn.service - …
Run Code Online (Sandbox Code Playgroud)

ubuntu stun webrtc turn coturn

6
推荐指数
1
解决办法
1万
查看次数

STUN 服务器如何获取 IP 地址/端口,然后如何使用这些?

我试图了解 WebRTC 的工作原理,但在理解 STUN 的作用时遇到了麻烦。

根据我在各种网页(例如rfc5389 )上阅读有关 STUN 的内容,或在 WebRTC 上观看Google 2013 年的演示,STUN 似乎唯一能做的就是告诉客户端它的公共 IP 地址/端口是什么。

然而,看看如何实现 STUN 服务器表明他们涉及更多,并且似乎包括诸如对 UDP、TCP 和 TLS-TCP 的故障回复支持之类的东西,以及客户端和服务器报告他们什么的握手期望他们的 IP 地址是,并根据对方所说的 IP 地址进行验证。例如,有趣的是,jselbi 的 stunserver 项目有超过 50 个 C++ 文件。

  1. 所以 STUN 必须做的不仅仅是报告公共 IP 地址/端口?

此外,我不明白为什么 WebRTC 客户端甚至需要知道自己的公共 IP 地址。在Google 的演示视频(时间 19:46)中,两个对等方想要从 NAT 后面相互通信,并且每个对等方还与信令服务器进行通信。该图表明每个信令服务器不知道对等方的公共 IP 地址/端口。但是这个图肯定是错误的:它显示了对端直接与信令服务器通话,但通过 NAT 间接与 STUN 服务器通话。实际上,对等方也将通过 NAT 与信令服务器通信,因此,信令服务器已经知道对等方的公共 IP 地址/端口。

由此,我遇到的问题是:

  1. 从客户端到信令服务器的任何请求都将在请求的 IP 标头中包含该客户端的公共 IP 地址/端口。客户端与 STUN 服务器通话时也是如此,这就是为什么 STUN 服务器可以用公共 IP 地址/端口进行响应的原因......是吗? …

stun webrtc

6
推荐指数
1
解决办法
2679
查看次数

使用映射的或公共的{IP:Port}直接进行对等通信

我正在寻找一种解决方案,以使用UDP或TCP在NAT **分离的Android终端或节点之间交换信息。

  • 我正在开发一个远程应用程序,客户端在其中直接相互通信。我使用的是STUN服务器实施,以获得公网IP:端口为Android客户端假设A和B

为了实现STUN服务器和NAT遍历,我使用了开放源代码。

STUN服务器软件即STUNTMAN

客户端A&B的 Android端上,为了从** STUNTMAN ** 获得Public IP:PORT ,我已经集成;

“ JSTUN”是基于Java的STUN客户端。

在Client-A,来自** STUNTMAN Server ** 的示例结果类似;

stunclient --mode full --localport 9999 stun.stunprotocol.org
Binding test: success
Local address: 192.168.1.8:9999
Mapped address: 1.2.3.4:9999
Behavior test: success
Nat behavior: Endpoint Independent Mapping
Filtering test: success
Nat filtering: Address and Port Dependent Filtering
Run Code Online (Sandbox Code Playgroud)

为了在Android客户端之间进行点对点通信,我维护了一个信令服务器,该服务器可以在客户端A和B之间准确共享映射地址

但是,当我尝试使用作为通信协议的UDP或TCP套接字启动对等通信时,它们之间没有这种通信。

我无法理解我在哪里做错了?我也尝试过这种解决方案:

关于眩晕服务器的困惑

android stun server

6
推荐指数
0
解决办法
125
查看次数

即使在 TURN 上,Webrtc 也无法连接到不同的网络

我在我的一个项目中使用RTCmulticonnection一切正常,除非它不能在不同的网络上工作。我已经经历了Github 问题,该问题表明它需要转向服务器才能在不同的网络上运行它。但我已经根据文档配置了转向服务器。

这是我的代码

<script src="https://rtcmulticonnection.herokuapp.com/dist/RTCMultiConnection.min.js"></script>
<script src="https://rtcmulticonnection.herokuapp.com/socket.io/socket.io.js"></script>

<script>
var connection = new RTCMultiConnection();

// this line is VERY_important
connection.socketURL = 'https://rtcmulticonnection.herokuapp.com:443/';

// if you want audio+video conferencing
connection.session = {
    audio: true,
    video: true
};

// first step, ignore default STUN+TURN servers
connection.iceServers = [];

// second step, set STUN url
connection.iceServers.push({
    urls: 'stun:mydimain.com:3478'
});

// last step, set TURN url (recommended)
connection.iceServers.push({
    urls: 'turn:mydimain.com:3478',
    credential: 'mypassword',
    username: 'myusername'
}); …
Run Code Online (Sandbox Code Playgroud)

javascript stun webrtc turn rtcmulticonnection

6
推荐指数
0
解决办法
1333
查看次数

WebRTC - WebRTC:ICE 失败,添加 STUN 服务器并参阅 about:webrtc 了解更多详细信息

我正在尝试使用 WebRTC 将视频流式传输到浏览器。我收到的错误是WebRTC: ICE failed, add a STUN server and see about:webrtc for more details. 这对我来说有点令人惊讶,因为在我的代码中,我在对等连接的配置对象中提到了谷歌 STUN 服务器之一,如下所示:

const config = {
        iceServers: [
          {
            urls: ['stun:stun.l.google.com:19302']
          }
        ]
      };
Run Code Online (Sandbox Code Playgroud)

我已经在 PC 上对此进行了测试,该项目正在运行并且能够在那里看到流。现在我想通过 ssh 隧道访问该网站。我转发了端口,现在可以在浏览器中打开 localhost:4000 并查看网站,但是视频不会显示,我会收到所描述的错误。

如何将视频也传输到远程 PC,或者为什么它无法通过 ssh 隧道工作?提前致谢!

video-streaming stun ssh-tunnel webrtc

6
推荐指数
0
解决办法
1996
查看次数

ICE vs STUN vs TURN

我读过ICE是 WebRTC 服务器上的代理,它将用户的 SDP 信息发送到 STUN 或 TURN 服务器。
STUN 和 TURN 服务器提供此 SDP 信息并为用户建立 P2P 连接。

真的吗?
那么,STUN 和 TURN 服务器之间的确切区别是什么?
如果ICE代理配置了TURN服务器,数据流会发生什么?在这种情况下,TURN 只是充当数据报转发器?

stun webrtc turn

5
推荐指数
2
解决办法
6039
查看次数