web端请求pomelo服务器

作者: 抓不住的风 | 来源:发表于2014-11-14 17:53 被阅读632次

    /* * 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}); 

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

    ======================================================== //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服务器

        本文链接:https://www.haomeiwen.com/subject/cvkitttx.html