initial commit of poker game
This commit is contained in:
90
game-server/app/servers/chat/handler/chatHandler.js
Normal file
90
game-server/app/servers/chat/handler/chatHandler.js
Normal file
@@ -0,0 +1,90 @@
|
||||
var UserStore = require('../../../persistence/users');
|
||||
var dispatcher = require('../../../util/dispatcher');
|
||||
|
||||
module.exports = function(app){
|
||||
return new Handler(app, app.get('chatService'));
|
||||
};
|
||||
var Handler = function(app, chatService){
|
||||
this.app = app;
|
||||
this.chatService = chatService;
|
||||
};
|
||||
var handler = Handler.prototype;
|
||||
|
||||
/**
|
||||
* Send messages to users in the channel
|
||||
*
|
||||
* @param {Object} msg message from client
|
||||
* @param {Object} session
|
||||
* @param {Function} next next stemp callback
|
||||
*
|
||||
*/
|
||||
handler.sendMessage = function(msg, session, next){
|
||||
var me = this;
|
||||
var tid = session.get('tid');
|
||||
var channelService = this.app.get('channelService');
|
||||
UserStore.getByAttr('id', session.uid, false, function(e, user){
|
||||
if(!user){
|
||||
next(null, {
|
||||
code : 500,
|
||||
error : 'user-not-exist'
|
||||
});
|
||||
return;
|
||||
}
|
||||
// target is all users
|
||||
if(msg.target == 'table'){
|
||||
var channel = channelService.getChannel(tid, true);
|
||||
msg.target = '*';
|
||||
channel.pushMessage({
|
||||
route : 'onChat',
|
||||
msg : msg.content,
|
||||
username : user.username,
|
||||
target : msg.target
|
||||
});
|
||||
next(null, {
|
||||
code : 200,
|
||||
route : msg.route
|
||||
});
|
||||
}else{
|
||||
// target is specific user
|
||||
me.chatService.pushByPlayerName(msg.target, {
|
||||
username : user.username,
|
||||
msg : msg.content
|
||||
}, function(e){
|
||||
if(e){
|
||||
return next(null, {
|
||||
code : 500,
|
||||
error : e
|
||||
});
|
||||
}
|
||||
next(null, {
|
||||
code : 200,
|
||||
route : msg.route
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Get friend list
|
||||
*
|
||||
* @param {Object} msg game parameters from client
|
||||
* @param {Object} session
|
||||
* @param {Function} next next step callback
|
||||
*
|
||||
*/
|
||||
handler.getFriends = function(msg, session, next){
|
||||
this.chatService.getFriendList(session.uid, function(e, friends){
|
||||
if(e){
|
||||
return next(null, {
|
||||
code : 500,
|
||||
error : e
|
||||
});
|
||||
}
|
||||
next(null, {
|
||||
code : 200,
|
||||
route : msg.route,
|
||||
friends : friends
|
||||
});
|
||||
});
|
||||
};
|
48
game-server/app/servers/chat/remote/chatRemote.js
Normal file
48
game-server/app/servers/chat/remote/chatRemote.js
Normal file
@@ -0,0 +1,48 @@
|
||||
module.exports = function(app){
|
||||
return new ChatRemote(app, app.get('chatService'));
|
||||
};
|
||||
|
||||
var ChatRemote = function(app, chatService){
|
||||
this.app = app;
|
||||
this.chatService = chatService;
|
||||
};
|
||||
|
||||
/**
|
||||
* Add player into channel
|
||||
*/
|
||||
ChatRemote.prototype.addToChannel = function(uid, cid, cb){
|
||||
this.chatService.addToChannel(uid, cid, cb);
|
||||
};
|
||||
|
||||
/**
|
||||
* Add player record
|
||||
*/
|
||||
ChatRemote.prototype.add = function(uid, cid, cb){
|
||||
this.chatService.add(uid, cid, cb);
|
||||
};
|
||||
|
||||
/**
|
||||
* Get members in a channel
|
||||
*/
|
||||
ChatRemote.prototype.getMembers = function(cid, cb){
|
||||
this.chatService.getMembers(cid, cb);
|
||||
};
|
||||
|
||||
/**
|
||||
* leave Channel
|
||||
* uid
|
||||
* cid
|
||||
*/
|
||||
ChatRemote.prototype.leave = function(uid, cid, cb){
|
||||
this.chatService.leave(uid, cid);
|
||||
cb();
|
||||
};
|
||||
|
||||
/**
|
||||
* kick out user
|
||||
*
|
||||
*/
|
||||
ChatRemote.prototype.disconnect = function(uid, cb){
|
||||
this.chatService.disconnect(uid);
|
||||
cb();
|
||||
};
|
101
game-server/app/servers/connector/handler/entryHandler.js
Normal file
101
game-server/app/servers/connector/handler/entryHandler.js
Normal file
@@ -0,0 +1,101 @@
|
||||
var logger = require('pomelo-logger').getLogger('con-log', __filename);
|
||||
|
||||
module.exports = function(app){
|
||||
return new Handler(app);
|
||||
};
|
||||
var Handler = function(app){
|
||||
this.app = app;
|
||||
};
|
||||
var handler = Handler.prototype;
|
||||
|
||||
/**
|
||||
* Register user.
|
||||
*
|
||||
* @param {Object} msg request message
|
||||
* @param {Object} session current session object
|
||||
* @param {Function} next next step callback
|
||||
*/
|
||||
handler.register = function(msg, session, next){
|
||||
this.app.rpc.game.authRemote.register(session, msg, function(e, user){
|
||||
if(e){
|
||||
next(null, {
|
||||
code : 500,
|
||||
error : e
|
||||
});
|
||||
}else{
|
||||
next(null, {
|
||||
code : 201
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Connect to the server
|
||||
*
|
||||
* @param {Object} msg request message
|
||||
* @param {Object} session current session object
|
||||
* @param {Function} next next step callback
|
||||
*/
|
||||
handler.connect = function(msg, session, next){
|
||||
var me = this;
|
||||
var sessionService = me.app.get('sessionService');
|
||||
me.app.rpc.game.authRemote.auth(session, msg, function(e, user, token){
|
||||
if(!user){
|
||||
next(null, {
|
||||
code : 401,
|
||||
error : e
|
||||
});
|
||||
return;
|
||||
}
|
||||
// duplicate log in
|
||||
if(!! sessionService.getByUid(user.id)){
|
||||
return next(null, {
|
||||
code : 500,
|
||||
error : 'duplicate-session'
|
||||
});
|
||||
}
|
||||
session.bind(user.id, function(e){
|
||||
if(e){
|
||||
console.error('error-binding-user', e);
|
||||
}
|
||||
session.set('username', user.username);
|
||||
session.on('closed', onUserLeave.bind(null, me.app));
|
||||
session.pushAll(function(e){
|
||||
if(e){
|
||||
console.error('set username for session service failed! error is : %j', e.stack);
|
||||
}
|
||||
});
|
||||
// add user to chat service
|
||||
me.app.rpc.chat.chatRemote.add(session, session.uid, function(e){
|
||||
if(e){
|
||||
return next(null, {
|
||||
code : 500,
|
||||
error : e
|
||||
});
|
||||
}
|
||||
next(null, {
|
||||
code : 200,
|
||||
token : token,
|
||||
user : user
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
/**
|
||||
* User log out handler
|
||||
*
|
||||
* @param {Object} app current application
|
||||
* @param {Object} session current session object
|
||||
*
|
||||
*/
|
||||
var onUserLeave = function(app, session){
|
||||
if(!session || !session.uid || !session.get('tid')){
|
||||
return;
|
||||
}
|
||||
if(session.get('tid')){
|
||||
app.rpc.chat.chatRemote.disconnect(session, session.uid, function(){});
|
||||
app.rpc.game.tableRemote.removeMember(session, session.uid, app.get('serverId'), session.get('tid'), function(){});
|
||||
}
|
||||
};
|
22
game-server/app/servers/game/filter/abuseFilter.js
Normal file
22
game-server/app/servers/game/filter/abuseFilter.js
Normal file
@@ -0,0 +1,22 @@
|
||||
|
||||
module.exports = function(){
|
||||
return new Filter();
|
||||
};
|
||||
|
||||
var Filter = function(){};
|
||||
|
||||
Filter.prototype.before = function (msg, session, next){
|
||||
if(msg.content && msg.content.indexOf ('fuck') !== -1){
|
||||
session.__abuse__ = true;
|
||||
msg.content = msg.content.replace ('fuck', '****');
|
||||
}
|
||||
next();
|
||||
};
|
||||
|
||||
Filter.prototype.after = function (err, msg, session, resp, next){
|
||||
if(session.__abuse__){
|
||||
var user_info = session.uid.split ('*');
|
||||
console.log ('abuse:' + user_info[0] + "at room" + user_info[1]);
|
||||
}
|
||||
next(err);
|
||||
};
|
245
game-server/app/servers/game/handler/tableHandler.js
Normal file
245
game-server/app/servers/game/handler/tableHandler.js
Normal file
@@ -0,0 +1,245 @@
|
||||
var logger = require('pomelo-logger').getLogger('game-log', __filename);
|
||||
|
||||
module.exports = function(app){
|
||||
return new Handler(app);
|
||||
};
|
||||
var Handler = function(app){
|
||||
this.app = app;
|
||||
};
|
||||
var handler = Handler.prototype;
|
||||
|
||||
/**
|
||||
* Get tables
|
||||
*
|
||||
* @param {Object} msg game parameters from client
|
||||
* @param {Object} session
|
||||
* @param {Function} next next step callback
|
||||
*
|
||||
*/
|
||||
handler.getTables = function(msg, session, next){
|
||||
var tableService = this.app.get('tableService');
|
||||
next(null, {
|
||||
code : 200,
|
||||
route : msg.route,
|
||||
tables : tableService.getTables()
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Create table
|
||||
*
|
||||
* @param {Object} msg game parameters from client
|
||||
* @param {Object} session
|
||||
* @param {Function} next next step callback
|
||||
*
|
||||
*/
|
||||
handler.createTable = function(msg, session, next){
|
||||
if(session.get('tid')){
|
||||
next(null, {
|
||||
code : 500,
|
||||
error : 'already-in-table'
|
||||
});
|
||||
return;
|
||||
}
|
||||
this.app.get('tableService').createTable(session.uid, msg, function(e){
|
||||
if(e){
|
||||
next(null, {
|
||||
code : 500,
|
||||
error : e
|
||||
});
|
||||
return;
|
||||
}
|
||||
next(null, {
|
||||
code : 200,
|
||||
route : msg.route
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Join table
|
||||
*
|
||||
* @param {Object} msg table parameters from client
|
||||
* @param {Object} session
|
||||
* @param {Function} next next step callback
|
||||
*
|
||||
*/
|
||||
handler.joinTable = function(msg, session, next){
|
||||
var me = this;
|
||||
var tableService = this.app.get('tableService');
|
||||
var table = tableService.getTable(msg.tid);
|
||||
if(!msg.tid || !table){
|
||||
next(null, {
|
||||
code : 500,
|
||||
error : 'invalid-table'
|
||||
});
|
||||
return;
|
||||
}
|
||||
session.set('tid', msg.tid);
|
||||
session.pushAll(function(err){
|
||||
if(err){
|
||||
logger.error('set tid for session service failed! error is : %j', err.stack);
|
||||
next(null, {
|
||||
code : 500,
|
||||
error : 'server-error'
|
||||
});
|
||||
return;
|
||||
}
|
||||
var tid = session.get('tid');
|
||||
me.app.rpc.chat.chatRemote.addToChannel(session, session.uid, tid, function(e){
|
||||
if(e){
|
||||
next(null, {
|
||||
code : 500,
|
||||
error : e
|
||||
});
|
||||
return;
|
||||
}
|
||||
tableService.addMember(tid, session.uid, function(e){
|
||||
if(e){
|
||||
next(null, {
|
||||
code : 500,
|
||||
error : e
|
||||
});
|
||||
return;
|
||||
}
|
||||
next(null, {
|
||||
code : 200,
|
||||
route : msg.route
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Leave table
|
||||
*
|
||||
* @param {Object} msg table parameters from client
|
||||
* @param {Object} session
|
||||
* @param {Function} next next step callback
|
||||
*
|
||||
*/
|
||||
handler.leaveTable = function(msg, session, next){
|
||||
var me = this;
|
||||
var tid = session.get('tid');
|
||||
if(!tid){
|
||||
return next(null, {
|
||||
code : 500,
|
||||
error : 'not-table-member'
|
||||
});
|
||||
}
|
||||
me.app.rpc.chat.chatRemote.leave(session, session.uid, tid, function(e){});
|
||||
session.set('tid', undefined);
|
||||
session.pushAll(function(e){
|
||||
if(e){
|
||||
logger.error('unset tid for session service failed! error is : %j', e.stack);
|
||||
return next(null, {
|
||||
code : 500,
|
||||
error : 'server-error'
|
||||
});
|
||||
}
|
||||
me.app.get('tableService').removeMember(tid, session.uid, function(e){
|
||||
if(e){
|
||||
next(null, {
|
||||
code : 500,
|
||||
error : e
|
||||
});
|
||||
return;
|
||||
}
|
||||
next(null, {
|
||||
code : 200,
|
||||
route : msg.route
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Join game
|
||||
*
|
||||
* @param {Object} msg game parameters from client
|
||||
* @param {Object} session
|
||||
* @param {Function} next next step callback
|
||||
*
|
||||
*/
|
||||
handler.joinGame = function(msg, session, next){
|
||||
this.app.get('tableService').addPlayer(session.get('tid'), session.uid, msg.buyIn, function(e){
|
||||
if(e){
|
||||
next(null, {
|
||||
code : 500,
|
||||
error : e
|
||||
});
|
||||
return;
|
||||
}
|
||||
next(null, {
|
||||
code : 200,
|
||||
route : msg.route
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Start game
|
||||
*
|
||||
* @param {Object} msg game parameters from client
|
||||
* @param {Object} session
|
||||
* @param {Function} next next step callback
|
||||
*
|
||||
*/
|
||||
handler.startGame = function(msg, session, next){
|
||||
this.app.get('tableService').startGame(session.get('tid'), function(e){
|
||||
if(e){
|
||||
next(null, {
|
||||
code : 500,
|
||||
error : e
|
||||
});
|
||||
}
|
||||
next(null, {
|
||||
code : 200,
|
||||
route : msg.route
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Perform an action on your turn
|
||||
*
|
||||
* @param {Object} msg game parameters from client
|
||||
* @param {Object} session
|
||||
* @param {Function} next next step callback
|
||||
*
|
||||
*/
|
||||
handler.execute = function(msg, session, next){
|
||||
this.app.get('tableService').performAction(session.get('tid'), session.uid, msg, function(e){
|
||||
if(e){
|
||||
next(null, {
|
||||
code : 500,
|
||||
error : e
|
||||
});
|
||||
}
|
||||
next(null, {
|
||||
code : 200,
|
||||
route : msg.route
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Perform an action on your turn
|
||||
*
|
||||
* @param {Object} msg game parameters from client
|
||||
* @param {Object} session
|
||||
* @param {Function} next next step callback
|
||||
*
|
||||
*/
|
||||
handler.removeBots = function(msg, session, next){
|
||||
var botService = this.app.get('botService');
|
||||
botService.removeAllBots(session.get('tid'), true);
|
||||
next(null, {
|
||||
code : 200,
|
||||
route : msg.route
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
188
game-server/app/servers/game/handler/userHandler.js
Normal file
188
game-server/app/servers/game/handler/userHandler.js
Normal file
@@ -0,0 +1,188 @@
|
||||
var logger = require('pomelo-logger').getLogger('game-log', __filename);
|
||||
var UserStore = require('../../../persistence/users');
|
||||
|
||||
module.exports = function(app){
|
||||
return new Handler(app);
|
||||
};
|
||||
var Handler = function(app){
|
||||
this.app = app;
|
||||
};
|
||||
var handler = Handler.prototype;
|
||||
|
||||
/**
|
||||
* Get users matching the criteria
|
||||
*
|
||||
* @param {Object} msg game parameters from client
|
||||
* @param {Object} session
|
||||
* @param {Function} next next step callback
|
||||
*
|
||||
*/
|
||||
handler.getUsers = function(msg, session, next){
|
||||
if(!msg.name && !msg.val && !session.uid){
|
||||
return next(null, {
|
||||
code : 500,
|
||||
error : 'invalid-input'
|
||||
});
|
||||
}
|
||||
var searchId = (msg.name == 'id' || msg.name == 'username' || msg.name == 'email') ? msg.name : 'id';
|
||||
var searchVal = typeof msg.val === 'string' ? msg.val : session.uid;
|
||||
UserStore.getByAttr(searchId, searchVal, {
|
||||
getArray : true
|
||||
}, function(e, matches){
|
||||
if(e){
|
||||
return next(null, {
|
||||
code : 500,
|
||||
error : e
|
||||
});
|
||||
}
|
||||
next(null, {
|
||||
code : 200,
|
||||
route : msg.route,
|
||||
matches : matches
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Update user profile
|
||||
*
|
||||
* @param {Object} msg game parameters from client
|
||||
* @param {Object} session
|
||||
* @param {Function} next next step callback
|
||||
*
|
||||
*/
|
||||
handler.setProfile = function(msg, session, next){
|
||||
if(!session.uid){
|
||||
return next(null, {
|
||||
code : 500,
|
||||
error : 'invalid-session'
|
||||
});
|
||||
}
|
||||
UserStore.getByAttr('id', session.uid, false, function(e, user){
|
||||
if(e){
|
||||
return next(null, {
|
||||
code : 500,
|
||||
error : e
|
||||
});
|
||||
}
|
||||
var userObj = {
|
||||
id : user.id
|
||||
};
|
||||
if(msg.email){
|
||||
userObj.email = msg.email.trim();
|
||||
}
|
||||
UserStore.set(userObj, function(e, updatedUser){
|
||||
if(e){
|
||||
return next(null, {
|
||||
code : 500,
|
||||
error : e
|
||||
});
|
||||
}
|
||||
next(null, {
|
||||
code : 200,
|
||||
route : msg.route
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Update user password
|
||||
*
|
||||
* @param {Object} msg game parameters from client
|
||||
* @param {Object} session
|
||||
* @param {Function} next next step callback
|
||||
*
|
||||
*/
|
||||
handler.setPassword = function(msg, session, next){
|
||||
if(!session.uid || !msg.oldpassword || !msg.password){
|
||||
return next(null, {
|
||||
code : 500,
|
||||
error : 'invalid-input'
|
||||
});
|
||||
}
|
||||
UserStore.getByAttr(['id', 'password'], [session.uid, msg.oldpassword], false, function(e, user){
|
||||
if(e){
|
||||
return next(null, {
|
||||
code : 500,
|
||||
error : e
|
||||
});
|
||||
}
|
||||
var userObj = {
|
||||
id : user.id,
|
||||
password : msg.password.trim()
|
||||
};
|
||||
UserStore.set(userObj, function(e, updatedUser){
|
||||
if(e){
|
||||
return next(null, {
|
||||
code : 500,
|
||||
error : e
|
||||
});
|
||||
}
|
||||
next(null, {
|
||||
code : 200,
|
||||
route : msg.route
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Add a friend to friend list
|
||||
*
|
||||
* @param {Object} msg game parameters from client
|
||||
* @param {Object} session
|
||||
* @param {Function} next next step callback
|
||||
*
|
||||
*/
|
||||
handler.addFriend = function(msg, session, next){
|
||||
if(!session.uid){
|
||||
return next(null, {
|
||||
code : 500,
|
||||
error : 'invalid-session'
|
||||
});
|
||||
}
|
||||
if(!msg.friend){
|
||||
return next(null, {
|
||||
code : 200,
|
||||
route : msg.route
|
||||
});
|
||||
}
|
||||
UserStore.getByAttr('id', session.uid, {
|
||||
getFullEntity : true
|
||||
}, function(e, user){
|
||||
if(e){
|
||||
return next(null, {
|
||||
code : 500,
|
||||
error : e
|
||||
});
|
||||
}
|
||||
UserStore.getByAttr('id', msg.friend, false, function(e, friend){
|
||||
if(e){
|
||||
return next(null, {
|
||||
code : 500,
|
||||
error : e
|
||||
});
|
||||
}
|
||||
user.friends.push({
|
||||
id : friend.id,
|
||||
username : friend.username
|
||||
});
|
||||
UserStore.set({
|
||||
id : user.id,
|
||||
friends : user.friends
|
||||
}, function(e, updatedUser){
|
||||
if(e){
|
||||
return next(null, {
|
||||
code : 500,
|
||||
error : e
|
||||
});
|
||||
}
|
||||
next(null, {
|
||||
code : 200,
|
||||
route : msg.route
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
82
game-server/app/servers/game/remote/authRemote.js
Normal file
82
game-server/app/servers/game/remote/authRemote.js
Normal file
@@ -0,0 +1,82 @@
|
||||
var UserStore = require('../../../persistence/users');
|
||||
var tokenService = require('../../../../../shared/token');
|
||||
var SESSION_CONFIG = require('../../../../../shared/config/session.json');
|
||||
|
||||
module.exports = function(app){
|
||||
return new Remote(app);
|
||||
};
|
||||
var Remote = function(app){
|
||||
this.app = app;
|
||||
};
|
||||
var remote = Remote.prototype;
|
||||
|
||||
/**
|
||||
* Register user.
|
||||
*
|
||||
* @param {object} userObj object containing userObj.user and userObj.pass
|
||||
* @param {Function} cb
|
||||
* @return {Void}
|
||||
*/
|
||||
remote.register = function(userObj, cb){
|
||||
UserStore.create({
|
||||
username : userObj.username,
|
||||
password : userObj.password,
|
||||
email : userObj.email,
|
||||
chips : 100000
|
||||
}, function(e, user){
|
||||
if(e){
|
||||
cb(e);
|
||||
}else{
|
||||
cb(null, user);
|
||||
}
|
||||
});
|
||||
};
|
||||
/**
|
||||
* Auth via user/pass or token, and check for expiry.
|
||||
*
|
||||
* @param {object|string} input token or object containing username and password
|
||||
* @param {Function} cb
|
||||
* @return {Void}
|
||||
*/
|
||||
remote.auth = function(input, cb){
|
||||
if(typeof input === 'string'){
|
||||
var res = tokenService.parse(input, SESSION_CONFIG.secret);
|
||||
if(!res){
|
||||
cb('invalid-token');
|
||||
return;
|
||||
}
|
||||
if(!checkExpire(res, SESSION_CONFIG.expire)){
|
||||
cb('token-expired');
|
||||
return;
|
||||
}
|
||||
UserStore.getByAttr('id', res.uid, false, function(e, user){
|
||||
if(e){
|
||||
cb('invalid-user');
|
||||
return;
|
||||
}
|
||||
cb(null, user);
|
||||
});
|
||||
}else{
|
||||
UserStore.getByAttr(['username', 'password'], [input.username, input.password], false, function(e, user){
|
||||
if(!user){
|
||||
cb('invalid-user');
|
||||
}else{
|
||||
cb(null, user, tokenService.create(user.id, Date.now(), SESSION_CONFIG.secret));
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
/**
|
||||
* Check the token whether expire.
|
||||
*
|
||||
* @param {Object} token token info
|
||||
* @param {Number} expire expire time
|
||||
* @return {Boolean} true for not expire and false for expire
|
||||
*/
|
||||
var checkExpire = function(token, expire){
|
||||
if(expire < 0){
|
||||
// negative expire means never expire
|
||||
return true;
|
||||
}
|
||||
return (Date.now() - token.timestamp) < expire;
|
||||
};
|
22
game-server/app/servers/game/remote/tableRemote.js
Normal file
22
game-server/app/servers/game/remote/tableRemote.js
Normal file
@@ -0,0 +1,22 @@
|
||||
module.exports = function(app){
|
||||
return new Remote(app);
|
||||
};
|
||||
var Remote = function(app){
|
||||
this.app = app;
|
||||
this.tableService = app.get('tableService');
|
||||
};
|
||||
var remote = Remote.prototype;
|
||||
|
||||
/**
|
||||
* Remove member/player from table
|
||||
*
|
||||
* @param {string} uid user id
|
||||
* @param {string} sid server id
|
||||
* @param {string} tid channel id
|
||||
* @param {function} cb callback
|
||||
*
|
||||
*/
|
||||
remote.removeMember = function(uid, sid, tid, cb){
|
||||
this.tableService.removeMember(tid, uid, cb);
|
||||
};
|
||||
|
37
game-server/app/servers/gate/handler/gateHandler.js
Normal file
37
game-server/app/servers/gate/handler/gateHandler.js
Normal file
@@ -0,0 +1,37 @@
|
||||
var dispatcher = require('../../../util/dispatcher');
|
||||
|
||||
module.exports = function(app){
|
||||
return new Handler(app);
|
||||
};
|
||||
|
||||
var Handler = function(app){
|
||||
this.app = app;
|
||||
};
|
||||
|
||||
var handler = Handler.prototype;
|
||||
|
||||
/**
|
||||
* Gate handler that dispatch user to connectors.
|
||||
*
|
||||
* @param {Object} msg message from client
|
||||
* @param {Object} session
|
||||
* @param {Function} next next stemp callback
|
||||
*
|
||||
*/
|
||||
handler.queryEntry = function(msg, session, next){
|
||||
// get all connectors
|
||||
var connectors = this.app.getServersByType('connector');
|
||||
if(!connectors || connectors.length === 0){
|
||||
next(null, {
|
||||
code : 500
|
||||
});
|
||||
return;
|
||||
}
|
||||
// select connector
|
||||
var res = dispatcher.dispatch(1, connectors);
|
||||
next(null, {
|
||||
code : 200,
|
||||
host : res.host,
|
||||
port : res.clientPort
|
||||
});
|
||||
};
|
Reference in New Issue
Block a user