带有easyrtc的TURN-Server不起作用

我使用easyrtc和node.js。 *****:8080 / demos / demo_audio_video_simple.html在同一networking上正常工作。 但是,如果我尝试从2个不同的networking,我只得到一个黑色的屏幕。

经过一些研究,我发现,我需要一个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服务器?

我build议阅读这些来设置一个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创build你的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服务器,我build议使用REST API的设置。 除此之外,您的问题没有提供足够的信息来正确地解决您的问题。