前面学firefly的过程让我学到了很多知识,但是简单的掌握一个小server完全不够用,所以决定再吃几个。神马erlang,golang,mina,c++,node.js,都尽量了解了解。先学开源的,那么就Pomelo吧!
pomelo,柚子,是网易(NetEasy)的一个基于Node.js的开源GameServer框架。
我前面介绍过firefly,初步看pomelo的时候,第一感觉就是pomelo的代码质量明显要高firefly一个档次。
具体我还没有深入了解。老规矩,想到哪里写到哪里。
老家在这里:http://pomelo.netease.com/
github在这里:https://github.com/netease/pomelo
和firefly一样,这个项目也自带一个游戏,不过是基于HTML5的页游,在这里:https://github.com/NetEase/lordofpomelo
在它的介绍里面列出了很多客户端的支持,赞一个!
这个介绍视频(http://www.infoq.com/cn/presentations/Game-Server-node)讲的不错,那个哥们讲的挺好,看一遍有助于快速了解。
OK,到这,假设大家已经逛了一圈回来了。对pomelo是个啥玩意也有大致了解了。
下面轮到代码了。
先安装Node.js;这里省略了。。。。
然后 git clone 那个pomelo,这个是Node.js的代码,安装: $sudo npm install -g;
俺node刚入门,看的是这篇快速入门:
http://www.nodebeginner.org/index-zh-cn.html (中文版,全)
英文版的是不全的,当然网上有PDF下载,大家自己找吧。
api必须是要过一遍的,但也只需浏览即可,反正俺看一遍最多只能够知道大体有啥玩意。用到再查。
http://nodejs.org/api/index.html
OK,到这里,假设大家和我一样Node.js入门了。(shame it)
那么我们回头看上面安装命令: npm,这个是node的包管理工具,类似linux的apt,mac的port,brew。python的easy-install;具体命令和用法过一遍,用的时候再说。
OK,pomelo也安装好了,而且我们在npm安装的时候使用的是-g;global 选项,说明安装到系统目录。那么系统会自动安装pomelo这个可执行程序。
chenee[183]:~/myCode/NodeJS/helloworld/web-server$ file `which pomelo` /usr/local/bin/pomelo: symbolic link to `../lib/node_modules/pomelo/bin/pomelo‘ chenee[183]:~/myCode/NodeJS/helloworld/web-server$ f /usr/local/lib/node_modules/pomelo/bin/pomelo /usr/local/lib/node_modules/pomelo/bin/pomelo: a node script, ASCII text executable chenee[183]:~/myCode/NodeJS/helloworld/web-server$
如上可见,其实pomelo这个可执行文件就是一个node.js的脚本。有兴趣的可以vi看看。
其实下面大家可以git clone 那个lordofpoemlo的HTML5游戏玩玩,这个后面肯定要仔细学习的,所以我们这里不提了。
我们直接来看pomelo的最简单的demo。
如下:
¥pomelo init helloworld
系统会自动的在当前目录生成一个helloworld文件夹,里面是一个非常简单的pomelo工程,这个工程包括2个模块,一个是game-server,一个是web-server;
平行目录有个非常简单的脚本:
chenee[183]:/tmp/helloworld$ ls game-server npm-install.bat npm-install.sh shared web-server chenee[183]:/tmp/helloworld$ cat npm-install.sh cd ./game-server && npm install -d echo ‘============ game-server npm installed ============‘ cd .. cd ./web-server && npm install -d echo ‘============ web-server npm installed ============‘ chenee[183]:/tmp/helloworld$
我们执行这个脚本,生成这个工程: $sudo sh npm-install.sh (我linux上要sudo,但是mac上好像又不需要,没有仔细研究,先放着)
OK,生成成功的话,控制台会有下面的输出。
└── connect@1.8.7 (formidable@1.0.14) npm info ok ============ web-server npm installed ============
OK,现在我们来看这个2个模块:
game-server:这个其实就是pomelo的游戏服务器,启动命令是在这个目录下面:$pomelo start 会有打印输出提示启动了几个服务,具体我还没有看。
web-server:这个其实和pomelo关系不大,就是调用Express这个Node.js的web框架来写一个非常简单的网页server。启动方法:$node app.js
这个时候大家打开console上提示的URL会看到哦一个非常简单的页面,点击页面下面的按钮,会有一个js的alert提示。说明我们的web-server和game-server都运行ok了。
下一章我们来详细看看web-server到底是啥。