2015-02-10 3 views
2

Я использую easyrtc с node.js. *****: 8080/demos/demo_audio_video_simple.html работают корректно в той же сети. Но если я попробую его из двух разных сетей, я получаю только черный экран.TURN-Server с easyrtc не работает

После некоторого исследования выяснилось, мне нужен сервер 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); 

Что я сделал не так?

ответ

2

Во-первых,

Вы настроить правильный сервер Turn?

Я предлагаю прочитать их, чтобы настроить сервер Turn с REST API:

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

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

Кроме того, если вы хотите, чтобы указать протокол TCP для сервера Turn, вы должны сделать это таким образом, в вашем коде, используя 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*****" 
    } 
]; 

Else, вы совместно пакетирования создать PeerConnection с некоторыми «ванильным» WebRTC JS:

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

Я предлагаю использовать установку с REST API, если вы хотите ограничить использование вашего Turn сервера нежелательными пользователями. Кроме этого, ваш вопрос не дает достаточной информации для правильной диагностики вашей проблемы.

+0

Спасибо сино, я проверю его с udp. Но я не хочу собственный сервер очереди, я хочу использовать бесплатную версию с url anyfirewall.com! –

+0

Дайте нам знать, как это происходит. Могу ли я узнать, почему вы используете easyrtc? Есть ли какая-то конкретная причина? –

+0

@JanMeisel Можете ли вы сообщить мне, как я могу получить сервер TURN и STUN с anyfirewall.com? Там сайт не wirking. Есть ли другой способ получить серверы с anyfirewall.com? Или они просто истекли? Я пробовал разные TURN severs, но никто не беспокоится. –