UNPKG

gitlab-acebase

Version:

AceBase realtime database server (webserver endpoint to allow remote connections)

50 lines 1.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.addMiddleware = void 0; /** * Adds connection management middleware. Add this as very first handler! * @param env */ const addMiddleware = (env) => { const sockets = new Set(); let terminating = false; const destroySocket = (socket) => { socket.destroy(); }; const addConnection = (socket) => { // console.log(`event: server.connection`); if (terminating) { destroySocket(socket); } else { sockets.add(socket); socket.once('close', () => { // console.log(`event: socket.close`); sockets.delete(socket); }); } }; env.server.on('connection', addConnection); env.server.on('secureConnection', addConnection); // Don't enable this: it'll make every other request real slow // env.app.use((req, res, next) => { // res.setHeader('Connection', 'close'); // next(); // }); const terminate = () => { terminating = true; console.warn(`Terminating ${sockets.size} open connections`); sockets.forEach(socket => { try { destroySocket(socket); } catch (err) { console.error(`Cannot destroy socket: ${err.message}`); } }); }; return terminate; }; exports.addMiddleware = addMiddleware; exports.default = exports.addMiddleware; //# sourceMappingURL=connection.js.map