2016-06-24 19 views
0

Ich arbeite an einer Video Chat Anwendung mit EasyRTC und Xirsys. Es funktioniert alleine (mit dem Google STUN-Server), schlägt aber fehl, wenn ich einen Listener für das Ereignis getIceConfig erstelle. Der EasyRTC-Server auf Port 8080, und ich habe auch einen Apache-Server läuft auf Port 80. Ich habe meine server.js-Datei wie folgt:Verbindung zu XIRSYS STUN und TURN Servern mit EasyRTC nicht möglich

// 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 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":1}); 

easyrtc.setOption("logLevel", "debug"); 

// Overriding the default easyrtcAuth listener, only so we can directly access its callback 
easyrtc.events.on("easyrtcAuth", function(socket, easyrtcid, msg, socketCallback, callback) { 
    easyrtc.events.defaultListeners.easyrtcAuth(socket, easyrtcid, msg, socketCallback, function(err, connectionObj){ 
     if (err || !msg.msgData || !msg.msgData.credential || !connectionObj) { 
      callback(err, connectionObj); 
      return; 
     } 

     connectionObj.setField("credential", msg.msgData.credential, {"isShared":false}); 

     console.log("["+easyrtcid+"] Credential saved!", connectionObj.getFieldValueSync("credential")); 

     callback(err, connectionObj); 
    }); 
}); 

// To test, lets print the credential to the console for every room join! 
easyrtc.events.on("roomJoin", function(connectionObj, roomName, roomParameter, callback) { 
    console.log("["+connectionObj.getEasyrtcid()+"] Credential retrieved!", connectionObj.getFieldValueSync("credential")); 
    easyrtc.events.defaultListeners.roomJoin(connectionObj, roomName, roomParameter, callback); 
}); 


// Start EasyRTC server 
var rtc = easyrtc.listen(httpApp, socketServer, null, function(err, rtcRef) { 
    console.log("Initiated"); 

    rtcRef.events.on("roomCreate", function(appObj, creatorConnectionObj, roomName, roomOptions, callback) { 
     console.log("roomCreate fired! Trying to create: " + roomName); 

     appObj.events.defaultListeners.roomCreate(appObj, creatorConnectionObj, roomName, roomOptions, callback); 
    }); 
}); 

easyrtc.on("getIceConfig", function(connectionObj, callback) { 

    // This object will take in an array of XirSys STUN and TURN servers 
    var iceConfig = []; 

    request({ 
     url: 'https://service.xirsys.com/ice', 
     qs: { 
      ident: "***", 
      secret: "***", 
      domain: "***", 
      application: "default", 
      room: "default", 
      secure: 1 
     }, 
     function (error, response, body) { 
      if (!error && response.statusCode == 200) { 
       // body.d.iceServers is where the array of ICE servers lives 
       iceConfig = body.d.iceServers; 
       console.log(iceConfig); 
       callback(null, iceConfig); 
      } 
     } 
    }); 
}); 

Die Debug-Fehlermeldungen sind unten:

info - EasyRTC: Starting EasyRTC Server (v1.0.15) on Node (v4.4.5) 
debug - EasyRTC: Emitting event 'startup' 
debug - EasyRTC: Running func 'onStartup' 
debug - EasyRTC: Configuring Http server 
debug - EasyRTC: Setting up demos to be accessed from '/demos/' 
debug - EasyRTC: Setting up API files to be accessed from '/easyrtc/' 
debug - EasyRTC: Configuring Socket server 
debug - EasyRTC: Creating application: 'default' 
debug - EasyRTC: [default] Room [default] Running func 'onRoomCreate' 
debug - EasyRTC: Creating room: 'default' with options: {} 
info - EasyRTC: EasyRTC Server Ready For Connections (v1.0.15) 
Initiated 
debug - EasyRTC: [U0LMzF8jbIBdxq3sGtxP] Socket connected 
debug - EasyRTC: Emitting event 'connection' 
debug - EasyRTC: Running func 'onConnection' 
debug - EasyRTC: [U0LMzF8jbIBdxq3sGtxP] Running func 'onEasyrtcAuth' 
debug - EasyRTC: Attempt to request non-existent application name: 'easyrtc.audioVideoSimple' 
debug - EasyRTC: Emitting Authenticate 
debug - EasyRTC: Creating application: 'easyrtc.audioVideoSimple' 
roomCreate fired! Trying to create: default 
debug - EasyRTC: [easyrtc.audioVideoSimple] Room [default] Running func 'onRoomCreate' 
debug - EasyRTC: Creating room: 'default' with options: {} 
[U0LMzF8jbIBdxq3sGtxP] Credential retrieved! null 
debug - EasyRTC: [easyrtc.audioVideoSimple][U0LMzF8jbIBdxq3sGtxP] Running func 'onRoomJoin' 
debug - EasyRTC: [easyrtc.audioVideoSimple][U0LMzF8jbIBdxq3sGtxP] Room [default] Running func 'connectionRoomObj.emitRoomDataDelta' 
debug - EasyRTC: [easyrtc.audioVideoSimple][U0LMzF8jbIBdxq3sGtxP] Room [default] Running func 'connectionRoomObj.generateRoomDataDelta' 
debug - EasyRTC: [easyrtc.audioVideoSimple][U0LMzF8jbIBdxq3sGtxP] Running func 'onSendToken' 
C:\Users\Jamie\nodes\easyrtc\node_modules\easyrtc\server_example\server.js:58 
    request({ 
    ^

ReferenceError: request is not defined 
    at EventEmitter.<anonymous> (C:\Users\Jamie\nodes\easyrtc\node_modules\easyrtc\server_example\server.js:58:5) 
    at emitTwo (events.js:87:13) 
    at EventEmitter.emit (events.js:172:7) 
    at C:\Users\Jamie\nodes\easyrtc\node_modules\easyrtc\lib\easyrtc_default_event_listeners.js:1057:34 
    at fn (C:\Users\Jamie\nodes\easyrtc\node_modules\easyrtc\node_modules\async\lib\async.js:582:34) 
    at Immediate._onImmediate (C:\Users\Jamie\nodes\easyrtc\node_modules\easyrtc\node_modules\async\lib\async.js:498:34) 
    at processImmediate [as _immediateCallback] (timers.js:383:17) 

info - EasyRTC: Starting EasyRTC Server (v1.0.15) on Node (v4.4.5) 
debug - EasyRTC: Emitting event 'startup' 
debug - EasyRTC: Running func 'onStartup' 
debug - EasyRTC: Configuring Http server 
debug - EasyRTC: Setting up demos to be accessed from '/demos/' 
debug - EasyRTC: Setting up API files to be accessed from '/easyrtc/' 
debug - EasyRTC: Configuring Socket server 
debug - EasyRTC: Creating application: 'default' 
debug - EasyRTC: [default] Room [default] Running func 'onRoomCreate' 
debug - EasyRTC: Creating room: 'default' with options: {} 
info - EasyRTC: EasyRTC Server Ready For Connections (v1.0.15) 
Initiated 
debug - EasyRTC: [YBCNOMSW7zbRXF0IH_g2] Socket connected 
debug - EasyRTC: Emitting event 'connection' 
debug - EasyRTC: Running func 'onConnection' 
debug - EasyRTC: [YBCNOMSW7zbRXF0IH_g2] Running func 'onEasyrtcAuth' 
debug - EasyRTC: Attempt to request non-existent application name: 'easyrtc.audioVideoSimple' 
debug - EasyRTC: Emitting Authenticate 
debug - EasyRTC: Creating application: 'easyrtc.audioVideoSimple' 
roomCreate fired! Trying to create: default 
debug - EasyRTC: [easyrtc.audioVideoSimple] Room [default] Running func 'onRoomCreate' 
debug - EasyRTC: Creating room: 'default' with options: {} 
[YBCNOMSW7zbRXF0IH_g2] Credential retrieved! null 
debug - EasyRTC: [easyrtc.audioVideoSimple][YBCNOMSW7zbRXF0IH_g2] Running func 'onRoomJoin' 
debug - EasyRTC: [easyrtc.audioVideoSimple][YBCNOMSW7zbRXF0IH_g2] Room [default] Running func 'connectionRoomObj.emitRoomDataDelta' 
debug - EasyRTC: [easyrtc.audioVideoSimple][YBCNOMSW7zbRXF0IH_g2] Room [default] Running func 'connectionRoomObj.generateRoomDataDelta' 
debug - EasyRTC: [easyrtc.audioVideoSimple][YBCNOMSW7zbRXF0IH_g2] Running func 'onSendToken' 
[...path]\node_modules\easyrtc\server_example\server.js:58 
    request({ 
    ^

ReferenceError: request is not defined 
    at EventEmitter.<anonymous> ([...path]\node_modules\easyrtc\server_example\server.js:58:5) 
    at emitTwo (events.js:87:13) 
    at EventEmitter.emit (events.js:172:7) 
    at [...path]\node_modules\easyrtc\lib\easyrtc_default_event_listeners.js:1057:34 
    at fn (C[...path]\node_modules\easyrtc\node_modules\async\lib\async.js:582:34) 
    at Immediate._onImmediate ([...path]\node_modules\easyrtc\node_modules\async\lib\async.js:498:34) 
    at processImmediate [as _immediateCallback] (timers.js:383:17) 

Irgendwelche Ideen über was verursacht dies? Es passiert sowohl in Chrome und Firefox. Vielen Dank.

Antwort

1

Hier ist Ihr Fehler:

ReferenceError: request is not defined 

Sie haben vergessen request mit dem HTTP-Objekt aufzurufen.

Hier ist Ihr fix:

ändern diese:

request({ 
     url: 'https://service.xirsys.com/ice', 
     ... 

Um dies zu sein:

http.request({ 
     url: 'https://service.xirsys.com/ice', 
     ... 
+0

Dies scheint das Problem zu beheben. – user5527561

+0

Kühl. Also gib mir eine grüne Checkbox (d. H. Akzeptiere die Antwort). – selbie