Ошибки Node.js EasyRTC, связанные с установкой - PullRequest
0 голосов
/ 14 мая 2018

Я занят изучением документации EasyRTC, чтобы понять, как она работает.У меня возникли проблемы с вызовом функций EasyRTC (easyApp, joinRoom и т. Д.).Я уверен, что это как-то связано с тем, как я его настроил, но не уверен, почему.

У меня файл сервера node.js настроен следующим образом (index.js)

////
// setup main
var express = require("express");
var http = require("http");
var socketio = require("socket.io");
var easyrtc = require("easyrtc");
var app = express();
var rootdir = "/opt/dev/nodejs/easyrtc/v100";

////
// middleware
app.use("/public", express.static(rootdir + "/public"));
app.set("view engine", "ejs");
app.set("views", rootdir + "/public/views");

////
// web server and socket server
var httpserver = http.createServer(app);
httpserver.listen(3000, function() { console.log("Server Started : Port 3000"); });
var socketioserver = socketio.listen(httpserver, {"log level":1});

////
// easyrtc server (extract from easyrtc example file)
easyrtc.setOption("logLevel", "debug");
var easyrtcserver = easyrtc.listen(app, socketioserver, null, function(err, rtcRef) {

   rtcRef.events.on ("roomCreate", function(appObj, creatorConnectionObj, roomName, roomOptions, callback) {
      appObj.events.defaultListeners.roomCreate (
         appObj, creatorConnectionObj, roomName, roomOptions, callback
      );
   });

});

////
// routes
var main_route = require("./public/logic/main/main_route.js");
app.use(main_route.router(express, easyrtc));

Кажется, это работает нормально, потому что я вижу выходные сообщения сервера на консоль.

info    - EasyRTC: Starting EasyRTC Server (v1.1.0) on Node (v8.7.0)
debug   - EasyRTC: Emitting event 'startup'
debug   - EasyRTC: Running func 'onStartup'
Server Started : Port 3000
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.1.0)

Так что я доволен этим, но проблема возникает, когда я пытаюсь взаимодействовать ссервер с моей главной страницей (main_route.js)

exports.router = function(express, easyrtc) {

   var router = express.Router();
   router.get("/", function(req, res) { f_main(res, easyrtc); });
   return router;

}

function f_main(res, easyrtc) {

   ////
   // render the gui
   res.render("main/main.ejs");

   ////
   // execute something to test although this fails
   easyrtc.joinRoom("Nothing", null, function() {}, function() {});

}

В функцию передается объект easyrtc, созданный сервером, и, если я повторяю его, я вижу, что это допустимый объект, но если я вызываю joinRoomили что-то из других функций Я получаю следующую ошибку

TypeError: easyrtc.joinRoom is not a function

Я не знаю, почему это так, я уверен, что делаю что-то очень глупое

1 Ответ

0 голосов
/ 02 апреля 2019

Вы можете вызвать функцию joinRoom для объекта приложения.

var easyrtcServer = easyrtc.listen(app, socketServer, null,
    function(err, rtc) {
        if (err) console.log(err);
        rtc.createApp(
            "rtcApp", null, rtcAppCallback
        );
});

var rtcAppCallback = function(err, appObj) {
    if (err) console.log(err);
    app.use('/', router(appObj));
};
...