The handler file called handler.js is the bridge, it has the initial callback for your provider, along with instantiation of the stack and loading of middleware and services. It finally returns the reponse abck to the providers ecosystem.
'use strict';
const Application = require('cerberus-mvc/System/Application');
const CorsMiddleware = require('cerberus-mvc/Middleware/Cors');
const KnexMiddleware = require('cerberus-mvc/Middleware/Knex');
const KnexService = require('cerberus-mvc/Service/Knex');
exports.run = (event, context, callback) => {
const app = new Application(event, 'aws');
const corsMiddleware = new CorsMiddleware(app.globals); // extends the core class, requires globals
const knexMiddleware = new KnexMiddleware(app.globals); // extends the core class, requires globals
const yourDBKnexService = new KnexService('postgres', '192.168.1.10', 5432, 'your_db', 'your_user', 'your_password'); // does not extend the core class, does not requires globals
app.service(yourDBKnexService);
app.middleware(corsMiddleware);
app.middleware(knexMiddleware);
app.run().then((response) => callback(null, response))
};
'use strict';
const os = require("os");
const cluster = require("cluster");
const clusterWorkerSize = os.cpus().length;
const Application = require('cerberus-mvc/System/Application');
const CorsMiddleware = require('cerberus-mvc/Middleware/Cors');
const KnexMiddleware = require('cerberus-mvc/Middleware/Knex');
const KnexService = require('cerberus-mvc/Service/Knex');
const express = require('express');
const requestIp = require('request-ip');
const bodyParser = require('body-parser');
const PORT = 8082;
const server = express();
if (clusterWorkerSize > 1) {
if (cluster.isMaster) {
for (let i = 0; i < clusterWorkerSize; i++) cluster.fork()
cluster.on("exit", (worker) => console.log("Worker", worker.id, " has exitted."));
} else process();
} else process();
function process() {
server.use(requestIp.mw())
server.use(bodyParser.urlencoded({ extended: false }))
server.use(bodyParser.json())
server.use('/', (req, res) => {
let app = new Application(req, 'express');
let corsMiddleware = new CorsMiddleware(app.globals); // extends the core class, requires globals
let knexMiddleware = new KnexMiddleware(app.globals); // extends the core class, requires globals
let yourDBKnexService = new KnexService('postgres', '192.168.1.10', 5432, 'your_db', 'your_user', 'your_password'); // does not extend the core class, does not requires globals
app.service(yourDBKnexService);
app.middleware(corsMiddleware);
app.middleware(knexMiddleware);
return app.run().then((response) => res.set(response.headers).status(response.status).send(response.body));
});
// Start
server.listen(PORT, () => console.log('Running on http://localhost:' + PORT));
}
'use strict';
const Application = require('cerberus-mvc/System/Application');
const express = require('express');
const http = require('http').Server(express());
const SOCKET_PORT = 3000
const io = require('socket.io')(http, {
cors: {
origin: "*",
methods: ["GET", "POST"],
allowedHeaders: ["authorization"]
}
});
// const AuthService = require('./src/Service/Auth.js'); // add in your service
// const AuthMiddleware = require('./src/Middleware/Auth.js'); // add in your middleware
io.on('connection', (socket) => {
socket.onAny((route, data) => {
console.log(route, data);
const app = new Application({ route, data, socket, io }, 'socket');
// const authService = new AuthService(app.globals); // add in your service
// const authMiddleware = new AuthMiddleware(app.globals); // add in your middleware
// app.service(authService); // add in your service
// app.middleware(authMiddleware); // add in your middleware
app.run();
});
});
http.listen(SOCKET_PORT, () => {
console.log('Socket API listening on http://localhost:' + SOCKET_PORT);
});
Both API's share the same template file! Set teh method as 'socket' in your tmeplate file route.
'use strict';
const Application = require('cerberus-mvc/System/Application');
const CorsMiddleware = require('cerberus-mvc/Middleware/Cors');
const AuthMiddleware = require('./src/Middleware/Auth.js');
const express = require('express');
const requestIp = require('request-ip');
const bodyParser = require('body-parser');
const API_PORT = 8082;
const server = express();
server.use(requestIp.mw())
server.use(bodyParser.urlencoded({ extended: false }))
server.use(bodyParser.json())
server.use('/', (req, res) => {
let app = new Application('express');
let corsMiddleware = new CorsMiddleware();
app.middleware(corsMiddleware);
return app.run(req).then((response) => res.set(response.headers).status(response.status).send(response.body));
});
server.listen(API_PORT, () => console.log('Rest API listening on http://localhost:' + API_PORT));
const http = require('http').Server(express());
const SOCKET_PORT = 3000
const io = require('socket.io')(http, {
cors: {
origin: "*",
methods: ["GET", "POST"],
allowedHeaders: ["authorization"]
}
});
io.on('connection', (socket) => {
socket.onAny((route, data) => {
const app = new Application({ route, data, socket, io }, 'socket');
const authMiddleware = new AuthMiddleware(app.globals); // add in your middleware
app.middleware(authMiddleware);
app.run();
});
});
http.listen(SOCKET_PORT, () => {
console.log('Socket API listening on http://localhost:' + SOCKET_PORT);
});