Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

62 строки
1.3 KiB

  1. var fs = require('fs');
  2. var mod = {
  3. init: function (callback) {
  4. var app = require('express')();
  5. var server = require('http').createServer(app);
  6. var io = require('socket.io')(server);
  7. app.use(function (req, res, next) {
  8. if (req.url.indexOf('/server') != 0)
  9. req.url = '/client/' + req.url;
  10. next();
  11. });
  12. app.get('/', this.requests.root.bind(this));
  13. app.get(/^(.*)$/, this.requests.default.bind(this));
  14. io.on('connection', this.listeners.onConnection.bind(this));
  15. var port = process.env.PORT || 4000;
  16. server.listen(port, function () {
  17. var message = 'Server: Ready';
  18. console.log(message);
  19. });
  20. },
  21. listeners: {
  22. onConnection: function (socket) {
  23. socket.on('request', this.listeners.onRequest.bind(this, socket));
  24. },
  25. onRequest: function (socket, msg, callback) {
  26. if (msg.action == 'load') {
  27. var res = JSON.parse(fs.readFileSync(msg.fileName + '.json'));
  28. callback(res);
  29. } else if (msg.action == 'save')
  30. fs.writeFileSync(msg.fileName + '.json', msg.data);
  31. if (callback)
  32. callback();
  33. }
  34. },
  35. requests: {
  36. root: function (req, res) {
  37. res.sendFile('index.html');
  38. },
  39. default: function (req, res, next) {
  40. var root = req.url.split('/')[1];
  41. var file = req.params[0];
  42. file = file.replace('/' + root + '/', '');
  43. res.sendFile(file, {
  44. 'root': '../' + root
  45. });
  46. }
  47. }
  48. };
  49. mod.init();