Pomelo 新手周计划学习笔记(一) Nodejs版

Pomelo 新手周计划学习笔记(一) Nodejs版

##前言## 由于目前pomelo公开资料没有什么教程类的,打算花一周时间学习一下pomelo.所以就简单的写个学习笔记,用来记录一下。

应该会有7篇,这篇应该是星期一学习的量,由于各种原因,总结慢了。。。 ##通读api## 个人认为,竟然要使用一个框架,对于框架提供的api必须要烂熟与心,pomelo的api 还是挺少的,所以量化一下,让初学者感觉读api不是那么可怕的事情。

<!–more–> ###7个大类###

Application (31 个方法)

由于这块的方法比较多,简单分一下类

环境

getBase();

set();

get

enabled();

disabled();

enbale();

disable();

configure();

初始化

start();

registerAdmin()

filter();

before()

after()

load()

loadConfig();

组件相关 route

获取相关配置,组件方法 getMaster()

getCurServer()

getServerId()

getServerType();

getServers();

getServersFromConfig();

getServerTypes();

getServerById();

getServerFromConfig();

getServersByType();

isFrontend()

isBackend()

isMaster()

addServers();

removerServers();

下面几个大类,方法比较少就不分类了。

ChannelService (5 个方法)

Channel (6 个方法)

LocalSessionService ( 4个方法)

LocalSession (6个方法)

SessionService (4个方法)

Pomelo(1个方法)

##Pomelo : Hello world ##

安装好pomelo 要创建一个项目很简单:

pomelo init heloworld

ok,我们的一个helloworld 就这样完成了。

###客户端编写### 我们来看一下,客户端如何与服务端进行通信的

     var pomelo = window.pomelo;
      var host = "127.0.0.1";
      var port = "3010";
      function show() {
        pomelo.init({
          host: host,
          port: port,
          log: true
        }, function() {
        pomelo.request("connector.entryHandler.entry", "hello pomelo", function(data) {
            alert(data.msg);
          });
        });
      }

从request请求connnecor.entryHandler.entry我们在game-server目录 app/servers/connector/handler/entryHandler.js 找到这么一个文件,打开这个文件以后我们发现了entry这个方法,现在我们能感叹,对于pomelo的通讯居然能够做到如此简单,为了验证我们的想法。我们在这个js文件里面加入

Handler.prototype.helloworld = function(msg, session, next){
    console.log(msg);
    console.log(session);
    next(null,  {code: 200, msg: 'Hello world!'});
}

接着客户端修改:

  pomelo.request("connector.entryHandler.helloworld", "hello pomelo", function(data) {
            alert(data.msg);
          });
        });

运行项目,然后就能看到我们成功完成服务端与客户端的通讯了。

今天,我们简单的搞明白了pomelo 如何创建项目,然后,客户端如何发起请求,已经服务端如何编写能够接受客户端请求的方法。

也欢迎来我的博客看。。。


9 回复

Pomelo 新手周计划学习笔记(一) Nodejs版

前言

由于目前Pomelo公开资料中缺乏教程类的内容,我决定花一周时间来学习Pomelo。因此,我将撰写一系列学习笔记,用于记录我的学习过程。预计会有七篇,这篇是星期一的学习笔记。

通读API

既然要使用一个框架,对框架提供的API必须非常熟悉。Pomelo的API相对较少,因此我会将其拆分成几个部分,以便初学者更容易理解。

Application 类

Application 类包含了许多方法,我们将其分为几类进行介绍:

环境相关方法
app.getBase(); // 获取基础路径
app.set(key, value); // 设置配置项
app.get(key); // 获取配置项
app.enabled(key); // 检查是否启用了某个功能
app.disabled(key); // 检查是否禁用了某个功能
app.enable(key); // 启用某个功能
app.disable(key); // 禁用某个功能
app.configure(key, fn); // 配置应用
初始化相关方法
app.start(); // 启动应用
app.registerAdmin(route, handler); // 注册管理路由
app.filter(filterName, filterFn); // 添加过滤器
app.before(route, handler); // 添加前置处理器
app.after(route, handler); // 添加后置处理器
app.load(plugin); // 加载插件
app.loadConfig(path); // 加载配置文件
组件相关方法
app.route(route, handler); // 注册路由
app.getMaster(); // 获取主服务器实例
app.getCurServer(); // 获取当前服务器实例
app.getServerId(); // 获取当前服务器ID
app.getServerType(); // 获取当前服务器类型
app.getServers(); // 获取所有服务器列表
app.getServersFromConfig(); // 从配置文件获取所有服务器列表
app.getServerTypes(); // 获取所有服务器类型
app.getServerById(id); // 根据ID获取服务器实例
app.getServerFromConfig(type); // 从配置文件获取指定类型的服务器实例
app.getServersByType(type); // 获取指定类型的服务器实例
app.isFrontend(); // 判断是否为前端服务器
app.isBackend(); // 判断是否为后台服务器
app.isMaster(); // 判断是否为主服务器
app.addServers(servers); // 添加新服务器
app.removeServers(servers); // 移除服务器

Pomelo: Hello World

安装好Pomelo后,创建一个项目非常简单:

pomelo init helloworld

这样我们就创建了一个名为helloworld的项目。

客户端编写

下面我们来看一下客户端如何与服务端进行通信。

客户端代码
var pomelo = window.pomelo;
var host = "127.0.0.1";
var port = "3010";

function show() {
  pomelo.init({
    host: host,
    port: port,
    log: true
  }, function() {
    pomelo.request("connector.entryHandler.entry", "hello pomelo", function(data) {
      alert(data.msg);
    });
  });
}
服务端代码

game-server目录下的app/servers/connector/handler/entryHandler.js文件中,我们可以找到entry方法。为了验证我们的想法,我们在该文件中添加一个新的处理函数:

Handler.prototype.helloworld = function(msg, session, next) {
  console.log(msg);
  console.log(session);
  next(null, { code: 200, msg: 'Hello world!' });
};
修改客户端请求

修改客户端代码以调用新的处理函数:

pomelo.request("connector.entryHandler.helloworld", "hello pomelo", function(data) {
  alert(data.msg);
});

运行项目,就可以看到服务端与客户端成功进行了通信。

总结

今天我们了解了如何创建Pomelo项目,并且学会了如何编写客户端代码与服务端进行通信。接下来我们将继续深入学习其他方面的内容。


希望这些示例代码和解释对你有所帮助!如果你有任何问题,欢迎随时提问。


学习了。

POMELO 是个游戏框架,怎么跟游戏前端的没有看到?给我的感觉就是个增强版的通讯工具(enhanced sockit.io)。

都是神人,那么晚都没睡

实际上pomelo 就是一个游戏后端的框架。。。前端没pomelo的事情。。。(个人观点),我的感觉跟你的一样。。不过,实际上,一个网络游戏,背后干的不就是一个基于数据的通讯?

惭愧, 写教程真是个艰巨的任务啊

赞一个~ 期待后续~

服务端是支持socket的,不过现在还没有官方支持的客户端。。

你可以参考这个issue https://github.com/NetEase/pomelo/issues/229

在本篇学习笔记中,我们将重点介绍如何使用Pomelo框架创建一个简单的项目,并实现客户端与服务端的通信。

创建Pomelo项目

首先,确保你已经安装了Pomelo CLI工具,可以通过npm安装:

npm install -g pomelo-cli

创建一个新的Pomelo项目:

pomelo init helloworld

这将会生成一个名为helloworld的项目模板。

服务端处理逻辑

接下来,我们需要定义一个服务端的处理逻辑。打开app/servers/connector/handler/entryHandler.js文件,找到entry方法,我们可以在这里添加新的处理逻辑。

例如,在entryHandler.js文件中添加如下代码:

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

var Handler = function(app) {
  this.app = app;
};

var handler = Handler.prototype;

handler.helloworld = function(msg, session, next) {
  console.log(msg);
  console.log(session);
  next(null, { code: 200, msg: 'Hello world!' });
};

上述代码定义了一个helloworld处理函数,它会接收客户端发送的消息,并返回一个包含消息的JSON对象。

客户端请求

现在,让我们看看如何通过客户端发起请求并与服务端通信。以下是客户端的JavaScript代码示例:

<script src="https://cdn.jsdelivr.net/npm/pomelo-client-js@1.0.1/dist/pomelo.min.js"></script>
<script>
  var pomelo = window.pomelo;
  var host = "127.0.0.1";
  var port = "3010";

  function show() {
    pomelo.init({
      host: host,
      port: port,
      log: true
    }, function() {
      pomelo.request("connector.entryHandler.helloworld", "hello pomelo", function(data) {
        alert(data.msg);
      });
    });
  }

  document.getElementById('connect').addEventListener('click', show);
</script>

上述代码首先初始化Pomelo客户端连接到指定的服务器,并在连接成功后发送一个请求到服务端的helloworld处理函数。如果服务端成功处理请求并返回数据,则会在客户端弹出一个警告框显示消息。

以上就是Pomelo新手周计划学习笔记的第一部分,希望对您有所帮助。如果您有任何疑问或建议,请随时留言讨论!

回到顶部