113 lines
2.6 KiB
JavaScript
113 lines
2.6 KiB
JavaScript
var logger = require('pomelo-logger').getLogger(__filename);
|
|
const userDao = require('../../../dao/userDao');
|
|
|
|
module.exports = function(app) {
|
|
return new Handler(app);
|
|
};
|
|
|
|
var Handler = function(app) {
|
|
this.app = app;
|
|
};
|
|
|
|
/**
|
|
* @api {post} connector.entryHandler.entry 建立连接-登录-入口 entry
|
|
* @apiGroup connector
|
|
*
|
|
* @apiParam {String} uid 用户ID
|
|
*
|
|
* @apiSuccess {Number} code 状态码
|
|
* @apiSuccess {String} msg 消息
|
|
*
|
|
* @apiSuccessExample {json} Success-Response:
|
|
* {
|
|
* "code": 200,
|
|
* "msg": "game server is ok."
|
|
* }
|
|
*
|
|
* @apiErrorExample {json} Error-Response:
|
|
* {
|
|
* "code": 500
|
|
* "error": true
|
|
* }
|
|
*
|
|
*/
|
|
Handler.prototype.entry = function(msg, session, next) {
|
|
const uid = msg.uid;
|
|
const sessionService = this.app.get('sessionService');
|
|
const serverId = this.app.serverId;
|
|
|
|
console.log(`-------entry ${session.id} : ${uid}`);
|
|
|
|
// 重复登录检查
|
|
// if( !! sessionService.getByUid(uid)) {
|
|
// console.log(`-------kick ${session.id} : ${uid}`)
|
|
// sessionService.kick(uid, ()=>{
|
|
// console.log(`-------kicked ${session.id} : ${uid}`)
|
|
// bindUser();
|
|
// return;
|
|
// })
|
|
// }
|
|
bindUser();
|
|
|
|
async function bindUser() {
|
|
const user = await userDao.getUserInfo(msg.uid)
|
|
console.log(`-------bind ${session.id} : ${uid}`);
|
|
session.bind(uid, ()=> {
|
|
session.set('uid', uid);
|
|
session.set('userInfo', user);
|
|
session.set('sid', serverId);
|
|
session.on('closed', onUserLeave.bind(null, this.app));
|
|
session.pushAll((err)=> {
|
|
if (err) {
|
|
|
|
logger.error('error: %j', err.stack);
|
|
next(null, { code: 500, error: true });
|
|
return;
|
|
}
|
|
next(null, {code: 200, msg: 'game server is ok.'});
|
|
})
|
|
});
|
|
}
|
|
|
|
};
|
|
|
|
var onUserLeave = function(app, session, reason) {
|
|
if (!session || !session.uid) {
|
|
return;
|
|
}
|
|
|
|
logger.debug(`onUserLeave ${session.id} : ${session.uid}`);
|
|
}
|
|
|
|
/**
|
|
* Publish route for mqtt connector.
|
|
*
|
|
* @param {Object} msg request message
|
|
* @param {Object} session current session object
|
|
* @param {Function} next next step callback
|
|
* @return {Void}
|
|
*/
|
|
Handler.prototype.publish = function(msg, session, next) {
|
|
var result = {
|
|
topic: 'publish',
|
|
payload: JSON.stringify({code: 200, msg: 'publish message is ok.'})
|
|
};
|
|
next(null, result);
|
|
};
|
|
|
|
/**
|
|
* Subscribe route for mqtt connector.
|
|
*
|
|
* @param {Object} msg request message
|
|
* @param {Object} session current session object
|
|
* @param {Function} next next step callback
|
|
* @return {Void}
|
|
*/
|
|
Handler.prototype.subscribe = function(msg, session, next) {
|
|
var result = {
|
|
topic: 'subscribe',
|
|
payload: JSON.stringify({code: 200, msg: 'subscribe message is ok.'})
|
|
};
|
|
next(null, result);
|
|
};
|