app配置遇到的问题,第一是没有触发回调,第二是示例中的配置设置问题

我在跟聊天室那个示例的时候,遇到个问题
在服务端的app里面,对每个类型服务端进行了一个配置

// app configuration
app.configure('production', 'connector', function(){
    app.set('connectorConfig',
        {
            connector : pomelo.connectors.hybridconnector,
            heartbeat : 15,
        });
});

app.configure('production', 'gate', function(){
    app.set('connectorConfig',
        {
            connector : pomelo.connectors.hybridconnector,
            useProtobuf : true
        });
});

然后跟了一下configure,发现在代码里,是这样的

Application.configure = function (env, type, fn) {
  var args = [].slice.call(arguments);
  fn = args.pop();
  env = type = Constants.RESERVED.ALL;

  if(args.length > 0) {
    env = args[0];
  }
  if(args.length > 1) {
    type = args[1];
  }

  if (env === Constants.RESERVED.ALL || contains(this.settings.env, env)) {
    if (type === Constants.RESERVED.ALL || contains(this.settings.serverType, type)) {
      fn.call(this);
    }
  }
  return this;
};

这个是configure的方法源代码,在第二个if中,serverType是master,因此这个回调始终无法被调用
然后我吧第二个if给注释掉后

// app configuration
app.configure('production', 'connector', function(){
    app.set('connectorConfig',
        {
            connector : pomelo.connectors.hybridconnector,
            heartbeat : 15,
        });
});

app.configure('production', 'gate', function(){
    app.set('connectorConfig',
        {
            connector : pomelo.connectors.hybridconnector,
            useProtobuf : true
        });
});

在这里看到对配置的不同类型的服务器,配置connectorConfig都是用的同一个key

也就是说,connector配置了connectorConfig,放入了app的缓存中,下面的gate服务配置的时候,也用的connectorConfig作为key,也就是覆盖了上面connector的配置

请问这个是这个示例有问题还是什么意思?
为什么在configure的条件使得回调始终无法触发,还有这里为什么要用同样的key来缓存配置?这样下面的配置不是就把上面的配置给冲掉了吗?

标签: bug 反馈 建议与改进 开发求助
yangyukun 在 2017-7-16 13:46发布 分享到 weibo
1 回复
#1 yangyukun 2017-7-16 13:50 回复

我是真心的希望能解决这些看起来让人疑惑的问题,希望有同样疑惑或者已经解决问题的开发者能够认真对待这些问题,不要让这些让人疑惑的代码就这样一笔带过,因为这个配置在示例里看起来就像是必要的,但实际上没有起到作用或者是有问题的,希望大家能认真解决这些问题

回到顶部