|
- let fs = require('fs');
-
- let mod = {
- init: function (callback) {
- let app = require('express')();
- let server = require('http').createServer(app);
- let io = require('socket.io')(server);
-
- app.use(function (req, res, next) {
- if (req.url.indexOf('/server') != 0)
- req.url = '/client/' + req.url;
-
- next();
- });
-
- let lessMiddleware = require('less-middleware');
- app.use(lessMiddleware('../', {
- force: true,
- render: {
- strictMath: true
- }
- }));
-
- app.get('/', this.requests.root.bind(this));
- app.get(/^(.*)$/, this.requests.default.bind(this));
-
- io.on('connection', this.listeners.onConnection.bind(this));
-
- let port = process.env.PORT || 5000;
- server.listen(port, function () {
- let message = 'Server: Ready';
- console.log(message);
- });
- },
-
- listeners: {
- onConnection: function (socket) {
- socket.on('request', this.listeners.onRequest.bind(this, socket));
- },
-
- onRequest: function (socket, msg, callback) {
- if (msg.action == 'load') {
- let res = JSON.parse(fs.readFileSync('saves/' + msg.fileName + '.json'));
- callback(res);
- } else if (msg.action == 'save')
- fs.writeFileSync('saves/' + msg.fileName + '.json', msg.data);
- else if (msg.action == 'getFileList') {
- callback(fs.readdirSync('saves/').map(l => (l.split('.')[0])));
- return;
- } else if (msg.action == 'persist')
- require('./persist')(msg.data);
-
- if (callback)
- callback();
- }
- },
- requests: {
- root: function (req, res) {
- res.sendFile('index.html');
- },
-
- default: function (req, res, next) {
- let root = req.url.split('/')[1];
- let file = req.params[0];
-
- file = file.replace('/' + root + '/', '');
-
- res.sendFile(file, {
- root: '../' + root
- });
- }
- }
- };
-
- mod.init();
|