【问题标题】:TURN-Server with easyrtc doesn't work带有easyrtc的TURN-Server不起作用
【发布时间】:2015-02-10 20:23:37
【问题描述】:

我将 easyrtc 与 node.js 一起使用。 *****:8080/demos/demo_audio_video_simple.html 在同一个网络上工作正常。但如果我从 2 个不同的网络尝试它,我只会得到一个黑屏。

经过一番研究,我发现,我需要一个 TURN 服务器,但它不起作用。

// Load required modules
var http    = require("http");              // http server core module
var express = require("express");           // web framework external module
var io      = require("socket.io");         // web socket external module
var easyrtc = require("easyrtc");           // EasyRTC external module

// Setup and configure Express http server. Expect a subfolder called "static" to be the web root.
var httpApp = express();

    httpApp.use(express.static(__dirname + "/static/"));


// Start Express http server on port 8080
var webServer = http.createServer(httpApp).listen(8080);

// Start Socket.io so it attaches itself to Express server
var socketServer = io.listen(webServer, {"log level":3});

var myIceServers = [
  {"url":"stun:anyfirewall.com:3478"},
  {
    "url":"turn:anyfirewall.com:443",
    "username":"flex*****",
    "credential":"32M3KsE*****"
  },
  {
    "url":"turn:anyfirewall.com:443[?transport=tcp]",
    "username":"flex*****",
    "credential":"32M3Ks*****"
  }
];

easyrtc.setOption("appIceServers", myIceServers);

easyrtc.on("getIceConfig", function(connectionObj, callback){
  callback(null, myIceServers);
})


// Start EasyRTC server
var rtc = easyrtc.listen(httpApp, socketServer);

我做错了什么?

【问题讨论】:

    标签: node.js webrtc turn easyrtc


    【解决方案1】:

    首先,

    您是否设置了合适的 Turn 服务器?

    我建议阅读这些以使用 REST Api 设置 Turn 服务器:

    http://www.dialogic.com/den/developer_forums/f/71/t/10238.aspx

    https://code.google.com/p/rfc5766-turn-server/wiki/turnserver

    另外,如果你想为 Turn 服务器指定 TCP 协议,你需要在你的代码中使用 easyrtc 这样做(默认情况下,UDP 是首选协议):

    var myIceServers = [
      {
        "url":"stun:anyfirewall.com:3478"
      },
      {
        "url":"turn:anyfirewall.com:443",
        "username":"flex*****",
        "credential":"32M3KsE*****"
      },
      {
        "url":"turn:anyfirewall.com:443?transport=tcp",
        "username":"flex*****",
        "credential":"32M3Ks*****"
      }
    ];
    

    否则,您可以使用一些“香草”webRTC JS 创建 peerConnection:

    var myIceServers = [
      {
        "urls":"stun:anyfirewall.com:3478"
      },
      {
        "url":"turn:anyfirewall.com:443?transport=udp",
        "username":"flex*****",
        "credential":"32M3KsE*****"
      },
      {
        "url":"turn:anyfirewall.com:443?transport=tcp",
        "username":"flex*****",
        "credential":"32M3Ks*****"
      }
    ];
    

    如果您想限制不需要的用户使用您的 Turn 服务器,我建议您使用带有 REST Api 的设置。除此之外,您的问题没有提供足够的信息来正确解决您的问题。

    【讨论】:

    • 谢谢syno,我会用udp测试它。但我不想要自己的轮流服务器,我想使用来自 url anyfirewall.com 的免费服务!
    • 告诉我们进展如何。我可以知道你为什么使用easyrtc吗?有什么具体原因吗?
    • @JanMeisel 你能告诉我如何从 anyfirewall.com 获取 TURN 和 STUN 服务器吗?那里的网站不工作。还有其他方法可以从 anyfirewall.com 获取服务器吗?还是他们刚刚过期?我尝试了不同的 TURN 服务器,但没有一个在工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 2021-09-05
    相关资源
    最近更新 更多