TURN-сервер с easyrtc не работает

Я использую 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);

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


person Jan Meisel    schedule 10.02.2015    source источник


Ответы (1)


Первый,

Вы настроили правильный сервер 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*****"
  }
];

В противном случае вы можете создать свое 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 нежелательными пользователями. Кроме того, ваш вопрос не содержит достаточно информации для правильного устранения вашей проблемы.

person Maxime Marchand    schedule 11.02.2015
comment
Спасибо, Syno, я проверю это с udp. Но мне не нужен собственный сервер очереди, я хочу использовать бесплатный URL-адрес anyfirewall.com! - person Jan Meisel; 11.02.2015
comment
Дайте нам знать, как это происходит. Могу я узнать, почему вы используете easyrtc? Есть какая-то конкретная причина? - person Maxime Marchand; 11.02.2015
comment
@JanMeisel Не могли бы вы сообщить мне, как я могу получить сервер TURN и STUN с anyfirewall.com? Сайт не работает. Есть ли другой способ получить серверы с anyfirewall.com? Или они просто истекли? Я пробовал разные серверы TURN, но ни один из них не работает. - person Atul Khanduri; 02.12.2016