| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- '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);
- };
|