io.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. 'use strict';
  2. // This file contains all the logic for Socket.IO
  3. const coreClass = require("../core");
  4. const async = require("async");
  5. const config = require("config");
  6. const express = require("express");
  7. const http = require("http");
  8. const socketio = require('socket.io');
  9. const accountSchema = require("../schemas/account.js");
  10. module.exports = class extends coreClass {
  11. /*constructor(name, moduleManager) {
  12. super(name, moduleManager);
  13. //this.dependsOn = ["app", "db", "cache", "utils"];
  14. }*/
  15. initialize() {
  16. return new Promise(resolve => {
  17. this.setStage(1);
  18. const app = express();
  19. const server = http.createServer(app);
  20. const io = socketio(server);
  21. this.handlers = {
  22. "getAccounts": cb => {
  23. cb({
  24. accounts: []
  25. });
  26. },
  27. "getAccountSchema": cb => {
  28. cb({
  29. schema: accountSchema
  30. });
  31. }
  32. }
  33. io.on('connection', (socket) => {
  34. console.log('a user connected');
  35. Object.keys(this.handlers).forEach(handlerName => {
  36. socket.on(handlerName, (...args) => {
  37. let cb = args[args.length - 1];
  38. if (typeof cb !== "function")
  39. cb = () => {
  40. this.logger.info("IO_MODULE", `There was no callback provided for ${name}.`);
  41. }
  42. else args.pop();
  43. this.handlers[handlerName].apply(null, [cb].concat(args));
  44. });
  45. });
  46. });
  47. server.listen(8080, function(){
  48. console.log('listening on *:8080');
  49. resolve();
  50. });
  51. });
  52. }
  53. }