Je travaille sur une application de chat vidéo utilisant EasyRTC et Xirsys. Il fonctionne correctement (avec le serveur Google STUN), mais échoue lorsque je crée un écouteur pour l'événement getIceConfig. Le serveur EasyRTC est sur le port 8080, et j'ai aussi un serveur Apache en cours d'exécution sur le port 80. J'ai créé mon fichier server.js comme suit:Impossible de se connecter aux serveurs Xirsys STUN et TURN en utilisant EasyRTC
// 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);
}
}
});
});
Les messages d'erreur de débogage sont ci-dessous:
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)
Des idées sur ce qui cause cela? Cela arrive à la fois dans Chrome et Firefox. Merci.
Cela semble résoudre le problème. – user5527561
Cool. Alors donnez-moi une case verte (c'est-à-dire acceptez la réponse). – selbie