3

node.js で easyrtc を使用しています。*****: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);

私は何を間違えましたか?

4

1 に答える 1

3

初め、

適切な 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 サーバーの使用を制限したい場合は、REST Api でセットアップを使用することをお勧めします。それ以外は、問題を適切にトラブルシューティングするのに十分な情報を提供していません。

于 2015-02-11T02:42:57.690 に答える