'use strict'; var C = require('./share/constant'); var Filter = function (app) { this.app = app; this.status = {}; }; Filter.prototype.before = function (msg, session, next) { do { if (!session.uid) break; let route = msg.route; let pos = route.lastIndexOf('.'); if (pos === -1) break; let method = route.substr(pos + 1); if (method !== 'createTable' && method !== 'joinTable') break; if (this.status[session.uid]) { let err = new Error(C.GAME_REQ_HANDLING); return next(err, { code: C.FAILD, msg: C.GAME_REQ_HANDLING }); } this.status[session.uid] = true; } while (0); return next(); }; Filter.prototype.after = function (err, msg, session, resp, next) { do { if (err && err.message == C.GAME_REQ_HANDLING) { err = null; break; } if (!session.uid) break; let route = msg.route; let pos = route.lastIndexOf('.'); if (pos === -1) break; let method = route.substr(pos + 1); if (method !== 'createTable' && method !== 'joinTable') break; if (this.status[session.uid]) this.status[session.uid] = false; } while (0); return next(err); }; module.exports = function (app) { return new Filter(app); };