Pomelo游戏服务器端开发系列(6)--Component

本文详细介绍了在Pomelo框架中如何通过定义组件的start, afterStart和stop钩子函数来管理组件的生命周期,包括组件的启动、运行和停止过程。同时,展示了如何在app.js中加载和配置组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

组件

add a component to pomelo

// components/HelloWorld.js
module.exports = function(app, opts) {
  return new HelloWorld(app, opts);
};

var DEFAULT_INTERVAL = 3000;

var HelloWorld = function(app, opts) {
  this.app = app;
  this.interval = opts.interval || DEFAULT_INTERVAL;
  this.timerId = null;
};

HelloWorld.name = '__HelloWorld__';

HelloWorld.prototype.start = function(cb) {
  console.log('Hello World Start');
  var self = this;
  this.timerId = setInterval(function() {
    console.log(self.app.getServerId() + ": Hello World!");
    }, this.interval);
  process.nextTick(cb);
}

HelloWorld.prototype.afterStart = function (cb) {
  console.log('Hello World afterStart');
  process.nextTick(cb);
}

HelloWorld.prototype.stop = function(force, cb) {
  console.log('Hello World stop');
  clearInterval(this.timerId);
  process.nextTick(cb);
}

每个component都定义start,afterStart, stop这些hook函数,供pomelo管理其生命周期时进行调用

app.js加载组件

// app.js
var helloWorld = require('./app/components/HelloWorld');

app.configure('production|development', 'master', function() {
  app.load(helloWorld, {interval: 5000});
});

说明

定义的组件一般往外导出的是一个工厂函数,而不是一个对象。当app加载component时,如果是一个工厂函数,那么app会将自己作为上下文信息以及后面的 opts作为参数传递给这个函数,使用这个函数的返回值作为component对象。 pomelo会先按照顺序执行完所有component的start后,才会按照顺序执行所有component的afterStart.

转载于:https://my.oschina.net/nextzeus/blog/911897

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值