pomelo mysql学习(一)配置文件、domain

原文链接: https://blog.csdn.net/gjyhit/article/details/80488095

目标:在简单的部署基础上,进一步提升需求,新用户注册,在数据表user中添加一条数据。

一、在数据库中新建一个table ,命名为user。

二、公共文件和配置文件,一些会被引用的组件

修改shared里面mysql配置文件,之后再game-server/app/dao下配置好dao-pool.js和mysql.js。

修改servers.json

{
    "development":{
        "connector":[
             {"id":"connector-server-1", "host":"127.0.0.1", "port":4050, "clientPort": 3050, "frontend": true},
             {"id":"connector-server-2", "host":"127.0.0.1", "port":4051, "clientPort": 3051, "frontend": true},
             {"id":"connector-server-3", "host":"127.0.0.1", "port":4052, "clientPort": 3052, "frontend": true}
         ],
        "area":[
             {"id":"area-server-1", "host":"127.0.0.1", "port":3160},
             {"id":"area-server-2", "host":"127.0.0.1", "port":3161},
        ],
        "auth":[
            {"id":"auth-server-1", "host":"127.0.0.1","port":3170}
        ],
        "gate":[
           {"id": "gate-server-1", "host": "127.0.0.1", "clientPort": 3014, "frontend": true}
        ]
    },
    "production":{
        "connector":[
             {"id":"connector-server-1", "host":"127.0.0.1", "port":4050, "clientPort": 3050, "frontend": true},
             {"id":"connector-server-2", "host":"127.0.0.1", "port":4051, "clientPort": 3051, "frontend": true},
             {"id":"connector-server-3", "host":"127.0.0.1", "port":4052, "clientPort": 3052, "frontend": true}
         ],
        "area":[
             {"id":"area-server-1", "host":"127.0.0.1", "port":3160},
             {"id":"area-server-2", "host":"127.0.0.1", "port":3161},
        ],
        "auth":[
            {"id":"auth-server-1","host":"127.0.0.1","port":3170}
        ],
        "gate":[
           {"id": "gate-server-1", "host": "127.0.0.1", "clientPort": 3014, "frontend": true}
        ]
  }
}
修改adminServer.json

[{
    "type": "connector",
    "token": "agarxhqb98rpajloaxn34ga8xrunpagkjwlaw3ruxnpaagl29w4rxn"
}, {
    "type": "area",
    "token": "agarxhqb98rpajloaxn34ga8xrunpagkjwlaw3ruxnpaagl29w4rxn"
},{
    "type": "gate",
    "token": "agarxhqb98rpajloaxn34ga8xrunpagkjwlaw3ruxnpaagl29w4rxn"
},{
    "type": "auth",
    "token": "agarxhqb98rpajloaxn34ga8xrunpagkjwlaw3ruxnpaagl29w4rxn"
}
]
进入shared文件夹,新建code.js

module.exports ={
    OK: 200,    
    FAIL:500,    
    ENTRY:{
        FA_TOKEN_INVALID: 1001,
        FA_TOKEN_EXPIRE: 1002,
        FA_USER_NOT_EXIST: 1003,        
    },    
    GATE:{
        FA_NO_SERVER_AVAILABLE: 2001,        
    },        
}
进入game-server/app,新建consts文件夹,新建consts.js

module.exports ={
    RES_CODE:{
        SUC_OK                :1,
        ERR_FAIL              :-1,
        ERR_USER_NOT_LOGINED  :-2,
        ERR_CHANNEL_DESTROYED :-10,
        ERR_SESSION_NOT_EXIST :-11,
        ERR_CHANNEL_DUPLICATE :-12,
        ERR_CHANNEL_NOT_EXIST :-13
    },
    
    MYSQL : {
        ERROR_DUP_ENTRY: 1062
    },
    
    MESSSAGE:{
        RES:200,
        ERR:500,
        PUSH:600
    },
    
    //SYS RETURN
    OK:     1,
    FAILED: 0,
    
    //  YES/NO
    YES: 1,
    NO:  0,
    
    DEFAULT_NAME: ''
}
进入game-server/app/util,新建utils.js

var utils = module.exports;
 
// control variable of func "myPrint"
var isPrintFlag = false;
// var isPrintFlag = true;
 
/**
 * Check and invoke callback function
 */
utils.invokeCallback = function(cb) {
  if(!!cb && typeof cb === 'function') {
    cb.apply(null, Array.prototype.slice.call(arguments, 1));
  }
};
 
/**
 * clone an object
 */
utils.clone = function(origin) {
  if(!origin) {
    return;
  }
 
  var obj = {};
  for(var f in origin) {
    if(origin.hasOwnProperty(f)) {
      obj[f] = origin[f];
    }
  }
  return obj;
};
 
utils.size = function(obj) {
  if(!obj) {
    return 0;
  }
 
  var size = 0;
  for(var f in obj) {
    if(obj.hasOwnProperty(f)) {
      size++;
    }
  }
 
  return size;
};
 
// print the file name and the line number ~ begin
function getStack(){
  var orig = Error.prepareStackTrace;
  Error.prepareStackTrace = function(_, stack) {
    return stack;
  };
  var err = new Error();
  Error.captureStackTrace(err, arguments.callee);
  var stack = err.stack;
  Error.prepareStackTrace = orig;
  return stack;
}
 
function getFileName(stack) {
  return stack[1].getFileName();
}
 
function getLineNumber(stack){
  return stack[1].getLineNumber();
}
 
utils.myPrint = function() {
  if (isPrintFlag) {
    var len = arguments.length;
    if(len <= 0) {
      return;
    }
    var stack = getStack();
    var aimStr = '\'' + getFileName(stack) + '\' @' + getLineNumber(stack) + ' :\n';
    for(var i = 0; i < len; ++i) {
      aimStr += arguments[i] + ' ';
    }
    console.log('\n' + aimStr);
  }
};
// print the file name and the line number ~ end
三、在game-server/app文件夹下新建domain文件夹,用来存放服务器端逻辑代码,逻辑代码主要用来完成具体的业务逻辑。在domain新建user.js 用来创建user对象

/**
 *Module dependencies
 */
 
 
var util = require('util');
 
 
/**
 * Initialize a new 'User' with the given 'opts'.
 *
 * @param {Object} opts  与数据库user的列一样
 * @api public
 */
 
var User = function(opts){
    this.id=opts.id;
    this.userName=opts.userName;
    this.password=opts.password;
    this.loginCount=opts.loginCount;
    this.lastLoginTime=opts.lastLoginTime;
    
}
 
/**
 * Expose 'user' constructor
 */
 
module.exports = User;
 
User.prototype.toJSON = function(){
    return {
        id: this.uid,
        userName: this.userName,
        password: this.password,
        loginCount: this.loginCount,
        lastLoginTime: this.lastLoginTime        
    }    
}
在domain下新建area.js

扫描二维码关注公众号,回复: 7565512 查看本文章

var logger = require('pomelo-logger').getLogger(__filename);
 
var exp = module.exports;
 
var users={};
 
exp.addUser= function(user){
    loggers.debugger('area.addUser:', user.uid);
    users[user.uid]=user;
};
 
exp.delUser = function(uid){
    loggers.debug('area.delUser:', uid);
    delete users[uid];
}
 
exp.getUser = function(uid){
    return users[uid];
}

待续。。。
 

猜你喜欢

转载自blog.csdn.net/qq_31967569/article/details/102684558