web端请求pomelo服务器

/* * web端请求pomelo服务器 */ 

/* 

pomelo服务器只有一个master服务器,master服务器代理masterAgent代为管理master的所有进程. 

一个服务器监听多个进程,这些进程都会在agent的管理下. 

pomelo 自身有socket.io模块,web请求pomelo 服务器就采用socket.io 不是websocket连接. 

pomelo-admin模块下 masterAgent.js文件 有一个listen会监听master服务器的所有事件. 这里主要是用到 

socket.on('client',function( msg ){ .... }); 监听客户端发来的请求 

msg参数是客户端呢发来的信息 判断msg中是否有命令 

我 这里的参数是没有命令的 

execute方法 该方法会调用moduleId下的clientHandler方法 这个方法里才是真正处理业务逻辑的地方 

 self.consoleService.execute(msg.moduleId, 'clientHandler', msg.body,function(err, res) { 

       if (protocol.isRequest(msg)) { 

           var resp = protocol.composeResponse(msg, err, res); 

           if (resp) { 

                 socket.emit('client', resp);

           } 

       } else { //notify should not have a callback

           logger.warn('notify should not have a callback.');

      }

 }); 

 参数中有一个moduleId 这个参数是在app.js文件中注册生成的, ======================================================== app.configure('production|development' ,function () { 

 var module = require("./modules/module.js"); 

app.registerAdmin(module, {app: app}); 

========================================================


web端请求pomelo服务器_第1张图片

======================================================== //module.js 

module.exports = function (opts) { 

 return new Module(opts); 

};


//对应consoleService.execute 方法中的msg.moduleId

 module.exports.moduleId = 'module'; 


 var Module = function (opts) {

        opts = opts || {}; 

        this.app = opts.app; 

};

 Module.prototype.clientHandler = function (agent, msg, cb) { 

          //业务逻辑都写在这里面 cb 将结果返回 

 }; ======================================================== 

你可能感兴趣的:(web端请求pomelo服务器)