@cocalc/hub
Version:
CoCalc: Backend webserver component
45 lines • 1.97 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const path_1 = require("path");
const Primus = require("primus");
const base_path_1 = __importDefault(require("@cocalc/backend/base-path"));
const logger_1 = __importDefault(require("@cocalc/backend/logger"));
const primus_client_1 = __importDefault(require("@cocalc/hub/primus-client"));
const { Client } = require("@cocalc/hub/client");
const misc_1 = require("@cocalc/util/misc");
const database_1 = require("./database");
function init({ httpServer, router, projectControl, clients, host, port, isPersonal, }) {
const logger = (0, logger_1.default)("primus");
// It is now safe to change the primusOpts below, and this
// doesn't require changing anything anywhere else.
// See https://github.com/primus/primus#getting-started
const primusOpts = {
pathname: (0, path_1.join)(base_path_1.default, "hub"),
maxLength: 2 * 10485760,
compression: true,
};
const 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,
logger,
database: database_1.database,
compute_server: projectControl,
host,
port,
personal: isPersonal,
});
logger.info(`num_clients=${(0, misc_1.len)(clients)}`);
});
// Serve the primus.js client code via the express router.
(0, primus_client_1.default)(router, primus_server);
}
exports.default = init;
//# sourceMappingURL=primus.js.map