gpt4 book ai didi

node.js - 带有 easyrtc 的 TURN-Server 不工作

转载 作者:搜寻专家 更新时间:2023-10-31 23:48:08 24 4
gpt4 key购买 nike

我将 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);

我做错了什么?

最佳答案

首先,

您是否设置了合适的 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 协议(protocol),则需要在您的代码中使用 easyrtc 以这种方式执行此操作(默认情况下 UDP 是首选协议(protocol)):

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*****"
}
];

否则,您可以使用一些“vanilla”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 的设置。除此之外,您的问题没有提供足够的信息来正确解决您的问题。

关于node.js - 带有 easyrtc 的 TURN-Server 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28441063/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com