带有easyrtc的TURN-Server不起作用



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

经过一些研究,我发现我需要一个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);

我做错了什么?

首先,

你是否设置了合适的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服务器,我建议使用RESTApi的设置。除此之外,您的问题没有提供足够的信息来正确解决您的问题。

相关内容

最新更新