2016-06-24 2 views
0

EasyRTC 및 Xirsys를 사용하여 화상 채팅 응용 프로그램을 만들고 있습니다. 자체적으로 (Google STUN 서버를 사용하여) 잘 작동하지만 getIceConfig 이벤트에 대한 리스너를 만들면 실패합니다. EasyRTC 서버는 8080 포트, 그리고 나는 또한 다음과 같이 내 server.js 파일을 설정 한 포트 80에서 실행중인 아파치 서버가 :EasyRTC를 사용하여 Xirsys STUN 및 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 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); 
      } 
     } 
    }); 
}); 

디버깅 오류 메시지는 다음과 같습니다 :

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) 

이 문제의 원인에 대한 의견이 있으십니까? 그것은 크롬과 파이어 폭스 모두에서 발생합니다. 감사.

ReferenceError: request is not defined 

당신은 HTTP 객체 request를 호출하는 것을 잊었다 :

답변

1

는 여기에 귀하의 오류입니다.

변경이 :

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

이 될 수 :

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

이 문제를 해결하는 것

여기 당신의 수정입니다. – user5527561

+0

차가움. 그러므로 녹색 확인란을 선택합니다 (예 : 답변 수락). – selbie

관련 문제