Scribe.js/examples/cluster-server.js
2016-01-22 10:42:13 -06:00

95 lines
No EOL
2.6 KiB
JavaScript

import cluster from 'cluster'
import http from 'http'
import express from 'express'
import Scribe from '../index.js'
import * as JSON2 from '../libs/JSON2'
const port = 4005;
const socketPort = 50000;
const cpus = 4;
if (cluster.isMaster) {
for (var i = 0; i < cpus; i++) {
cluster.fork();
}
} else {
const console = new Scribe(cluster.worker.id, {
name: 'ScribeCluster',
mongoUri: 'mongodb://localhost/scribe',
publicUri: 'http://localhost',
basePath: 'scribe/',
socketPort: socketPort + cluster.worker.id - 1, // assign a port to a worker worker
web: {
router: {
username: 'build',
password: 'build',
// authentication must be implemented by yourself
// if you are in cluster mode
authentication: false,
sessionSecret: 'scribe-session',
useBodyParser: true,
useSession: true
},
client: {
port: port,
socketPorts: [socketPort, socketPort + 1, socketPort + 2, socketPort + 3],
exposed: {
all: {label: 'all', query: {expose: {$exists: true}}},
error: {label: 'error', query: {expose: 'error'}},
express: {label: 'express', query: {expose: 'express'}},
info: {label: 'info', query: {expose: 'info'}},
log: {label: 'log', query: {expose: 'log'}},
warn: {label: 'warn', query: {expose: 'warn'}},
trace: {label: 'trace', query: {expose: 'trace'}},
perf: {label: 'perf', query: {expose: 'perf'}}
}
}
},
debug: false
});
// default tags
console.persistent('tags', ['mocha', 'scribe']);
// basic logging
function func(foo, bar) {
console.log('func')
}
console.log(JSON2.parse(JSON2.stringify([func, new Promise((req, res)=>0)])));
console.log({multi: "object"}, {test: 5}, {date: new Date()});
// express
const app = express();
// express logger
app.use(console.middleware('express'));
// test harness
app.get('/test', (req, res) => {
console.log({multi: "object"}, {test: 5}, {date: new Date()}).then(()=> {
res.json({test: new Array(parseInt(Math.random() * 50)).join('.')})
});
});
// viewer
app.use('/scribe', console.viewer());
app.listen(port, () => console.log(`Listening to ${port} - Cluster ${cluster.worker.id}`));
// build native app
if (cluster.worker.id == 1) {
console.build().then(()=> console.log('Created native apps!')).catch(err => console.error(err));
}
// override default console
console.override();
global.console.log('overriden!');
console.log(`Go to http://localhost:${port}/scribe`);
console.trace('This is a trace');
console.warn('Warning!!');
}