文档章节

pomelo解耦代码组织

梦想游戏人
 梦想游戏人
发布于 2016/07/11 13:51
字数 375
阅读 161
收藏 1

本文demo给予 上一片博文(pomelo链接mysql

暴露给客户端的servers 逻辑部分解耦到service服务,达到解耦的目的

需求:吧购买物品解耦到service目录

添加持久对象: this.GoodsService


module.exports = function (app) {
    return new Handler(app);
};

var Handler = function (app) {
    this.app = app;
    
    
    var GoodsService = require(app.getBase() + "/app/service/game/GoodsService.js");
    this.GoodsService = new GoodsService();
 

};
var handler = Handler.prototype;


修改gameHandler.js里的 buyGoods函数的代码

handler.buyGoods = function (msg, session, next) {
    var id = msg.id;
    var count = msg.count;
    
    ///////////////////////////////
    
    if (id == "100" && count == 1) {//验证购买条件        //允许购买
        
        this.GoodsService.buyGoods(msg.id, session.uid, function (err, res) {
            
            if (err) { // 购买失败
                console.error("[Error]:数据库服务器错误");
                next(null, { msg: "购买失败,服务器错误!", code: 200 });

            }
            else {//购买成功
                next(null, { msg: "购买物品:#活血丹 成功", code: 200 });

            }
        });

    } else { // 不允许购买
        next(null, { msg: "你的金币不足,购买失败", code: 200 });
    }


}
//还可以进一步解耦为
handler.buyGoods = function (msg, session, next) {
        this.GoodsService.buyGoods(msg.id, session.uid, next);
}

 

添加  game-server\app\service\game\GoodsService.js

function GoodsService() {
    console.error("[GoodsService]:new GoodsService"); // 检测不同的客户端是否会new 该脚本
}

GoodsService.prototype.buyGoods = function (id, owner, cb) {
    var sql = " insert into `goods` (`id`, `owner`) VALUES(?, ?)";
    
    var args = [id, owner];
    var dbclient = pomelo.app.get('dbclient');//获取全局mysql client
    
    console.log(dbclient);
    dbclient.query(sql, args, function (err, res) {//执行sql语句 函数insert和query等效
        
        cb(err, res);
    });

};

module.exports = GoodsService;


//进一步解耦 在这里 不列出

新建多个客户端连接,构造器只被调用了一次说明了所有客户端 都是用的同一个 服务器的 实例化的handler ,所以用路由来分配服务器压力格外重要

© 著作权归作者所有

下一篇: pomelo链接mysql
梦想游戏人
粉丝 41
博文 461
码字总数 132517
作品 0
成都
私信 提问
pomelo用bearcat热更新

该文章是基于上一篇文章的项目(pomelo解耦代码组织) 热更新的目的在于不用重启服务器就能更新服务端代码,其中一个场景是: 暴露给服务端的接口,不需要更新,接口包装了具体的服务,这个服...

梦想游戏人
2016/07/11
457
0
前端小纠结--Vue项目代码组织和风格约定

原文地址 但不限于,还有一些其他的。 代码组织和分层 代码组织是一个仁者见仁,智者见智的话题,没有银弹。不过不管怎么变化,指导思想还是不变的高内聚,低耦合。 强烈推荐两篇文章,能够拓...

betgar
06/12
0
0
SICP 中有意思的东西(二):抽象(上篇)

上一篇文章SICP 中有意思的东西(一):SICP 介绍 - 知乎专栏里的介绍了 SICP,评论区出现的大神对 SICP 的一句话评价非常到位。 brambles: 这书就是把很多我们早已会用的东西真正的理论化和...

SimplyY
2017/06/13
0
0
【演讲精华】我们离真正的区块链经济还有多远?

摘要 2018年5月5日,火币区块链应用研究院李骅熹博士参加在北京浦项中心举办的第一届区块链应用和数字资产高峰论坛,发表演讲《我们离真正的区块链经济还有多远》,演讲就如何解决目前区块链...

火币区块链研究院
2018/09/01
0
0
pomelo 1.0 preview版发布, 网易开源游戏服务器框架

## pomelo udpconnector提供 根据网友的要求,在pomelo 1.0中提供了udpconnector。在该udpconnector中,采用了pomelo之前hybridconnector提供的传输协议,包括握手、心跳及数据包的格式。该c...

谢骋超
2014/05/16
4.8K
9

没有更多内容

加载失败,请刷新页面

加载更多

Tensorflow 2.0安装

Tensorflow2.0安装环境: Ubuntu 16.04或更高(64位) Windows 7或者更高(64位,且支持python3) 安装Tensorflow 2.0 GPU版本的需要安装NVIDIA相关软件包: NVIDIA驱动 :版本必须410.x或更...

JosiahMg
11分钟前
2
0
TL138/1808/6748F-EasyEVM开发板硬件、CPU、FLASH、RAM

TL138/1808/6748F-EasyEVM是广州创龙基于SOM-TL138/SOM-TL1808/SOM-TL6748F核心板开发的一款开发板。由于SOM-TL138/SOM-TL1808/SOM-TL6748核心板管脚兼容,所以此三个核心板共用同一个底板。...

Tronlong创龙
19分钟前
2
0
百度嵌入式AI解决方案EdgeBoard之内存驱动设计介绍

1. 背景介绍 由于 FPGA 具备可编程和高性能计算的特点,基于FPGA硬件的AI计算加速,正广泛地应用到计算机视觉处理领域。其中极具代表性的部署方式之一就是使用FPGA和CPU组合构成异构计算系统...

AI君
25分钟前
5
0
开放应用模型(OAM):全球首个云原生应用标准定义与架构模型

Kubernetes 项目作为容器编排领域的事实标准, 成功推动了诸如阿里云 Kubernetes (ACK)等云原生服务的迅速增长。但同时我们也关注到,Kubernetes 的核心 API 资源比如 Service、Deploymen...

Mr_zebra
28分钟前
2
0
《Linux操作系统-Exynos4412》编译和安装Busybox

开发环境:Exynos4412-iTOP-4412开发板 现在 Busybox 的配置已经完成了,接下来开始编译 Busybox,在 Ubuntu 的终端输入 “make”命令开始编译 Busybox,如下图。 下图为编译过程中的截图。 ...

书白
31分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部