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 如何创建项目,然后,客户端如何发起请求,已经服务端如何编写能够接受客户端请求的方法。
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的事情。。。(个人观点),我的感觉跟你的一样。。不过,实际上,一个网络游戏,背后干的不就是一个基于数据的通讯?
惭愧, 写教程真是个艰巨的任务啊
赞一个~ 期待后续~
pomelo是否是只支持socket.io,不支持socket?
服务端是支持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新手周计划学习笔记的第一部分,希望对您有所帮助。如果您有任何疑问或建议,请随时留言讨论!