smc-hub
Version:
CoCalc: Backend webserver component
40 lines • 1.88 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var path_1 = require("path");
var Primus = require("primus");
var base_path_1 = __importDefault(require("smc-util-node/base-path"));
var logger_1 = __importDefault(require("smc-util-node/logger"));
var primus_client_1 = __importDefault(require("smc-hub/primus-client"));
var Client = require("smc-hub/client").Client;
var misc_1 = require("smc-util/misc");
var database_1 = require("./database");
function init(_a) {
var httpServer = _a.httpServer, router = _a.router, projectControl = _a.projectControl, clients = _a.clients, host = _a.host, isPersonal = _a.isPersonal;
var logger = logger_1.default("primus");
// It is now safe to change the primusOpts below, and this
// doesn't require changing anything anywhere else.
var primusOpts = { pathname: path_1.join(base_path_1.default, "hub") };
var primus_server = new Primus(httpServer, primusOpts);
logger.info("listening on " + primusOpts.pathname);
// Make it so new websocket connection requests get handled:
primus_server.on("connection", function (conn) {
// Now handle the connection
logger.info("new connection from " + conn.address.ip + " -- " + conn.id);
clients[conn.id] = new Client({
conn: conn,
logger: logger,
database: database_1.database,
compute_server: projectControl,
host: host,
personal: isPersonal,
});
logger.info("num_clients=" + misc_1.len(clients));
});
// Serve the primus.js client code via the express router.
primus_client_1.default(router, primus_server);
}
exports.default = init;
//# sourceMappingURL=primus.js.map