UNPKG

relution-sdk

Version:

Relution Software Development Kit for TypeScript and JavaScript

105 lines (88 loc) 2.84 kB
var exec = require('child_process').exec; //start mongodb exec('mongod run --config /usr/local/etc/mongod.conf', function(){}); var express = require('express'); var bodyParser = require('body-parser') var server = express(); var http_server = require('http').createServer(server); var socketPath = '/relution/livedata/live'; var sockets = require('./livedata_live.js').listen(http_server, socketPath); var rest = require('./mongodb_rest.js').create("test"); var PORT = 8200; var path = "/relution/livedata"; http_server.listen(PORT); console.log('http://127.0.0.1:' + PORT); server.use(express.static(__dirname + '/public/')); server.use(express.static(__dirname + '/../')); server.use(bodyParser()); /* Allow Access-Control-Allow-Origin to everyone */ server.use(function(req, res, next) { var oneof = false; if(req.headers.origin) { res.header('Access-Control-Allow-Origin', req.headers.origin); oneof = true; } if(req.headers['access-control-request-method']) { res.header('Access-Control-Allow-Methods', req.headers['access-control-request-method']); oneof = true; } if(req.headers['access-control-request-headers']) { res.header('Access-Control-Allow-Headers', req.headers['access-control-request-headers']); oneof = true; } if(oneof) { res.header('Access-Control-Max-Age', 60 * 60 * 24 * 365); } // intercept OPTIONS method if (oneof && req.method == 'OPTIONS') { res.send(200); } else { next(); } }); //Find documents server.get(path+"/:name/info", function(req, res) { res.send({ time: new Date().getTime(), socketPath: socketPath, entity: req.params.name }); }); //Find documents server.get(path+"/:name", function(req, res) { rest.find(req, res); }); //Find a specific document server.get(path+'/:name/:id', function(req, res) { rest.findOne(req, res); }); //Find a changes since given time server.get(path+'/:name/changes/:time', function(req, res) { rest.findChanges(req, res); }); //Create document(s) server.post(path+'/:name', function(req, res) { rest.create(req, res); }); //Update a document server.put(path+'/:name/:id', function(req, res) { rest.update(req, res); }); //Delete a document server.delete(path+'/:name/:id', function(req, res){ rest.delete(req, res); }); // overriden functions rest.sendMessage = function(entity, msg) { rest.saveMessage(entity, msg); sockets.sendMessage(entity, msg); }; sockets.handleMessage = function(entity, msg, callback) { if (msg && msg.method) { return rest.handleMessage(entity, msg, callback); } }; sockets.readMessages = function(entity, time, callback) { rest.readMessages(entity, time, callback); };