Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 

58 рядки
1.1 KiB

  1. //Imports
  2. const router = require('../security/router');
  3. //Events
  4. const onHandshake = socket => {
  5. cons.onHandshake(socket);
  6. };
  7. const onDisconnect = socket => {
  8. cons.onDisconnect(socket);
  9. };
  10. const onRequest = (socket, msg, callback) => {
  11. msg.callback = callback;
  12. if (!msg.data)
  13. msg.data = {};
  14. if (msg.cpn) {
  15. if (!router.allowedCpn(msg))
  16. return;
  17. delete msg.threadModule;
  18. cons.route(socket, msg);
  19. } else if (msg.threadModule) {
  20. if (!router.allowedGlobalCall(msg.threadModule, msg.method))
  21. return;
  22. delete msg.cpn;
  23. cons.route(socket, msg);
  24. } else {
  25. if (!router.allowedGlobal(msg))
  26. return;
  27. const source = cons.players.find(p => p.socket.id === socket.id);
  28. msg.socket = socket;
  29. if (source)
  30. msg.data.sourceId = source.id;
  31. global[msg.module][msg.method](msg);
  32. }
  33. };
  34. const onConnection = socket => {
  35. socket.on('handshake', onHandshake.bind(null, socket));
  36. socket.on('disconnect', onDisconnect.bind(null, socket));
  37. socket.on('request', onRequest.bind(null, socket));
  38. socket.emit('handshake');
  39. };
  40. //Exports
  41. module.exports = onConnection;