前言
热身
本教程适用于对pomelo零基础的用户,如果你已经有过一定的pomelo开发基础,请跳过这个教程,你可以阅读开发指南,那里会对一些话题作较为详细的探讨。
由于pomelo是基于node.js并使用javascript开发的,因此希望你在阅读本教程前对node.js和javascript有一些了解。
本教程的示例源码放在github上,对于教程的不同部分,使用了不同的分支,因此希望你在使用本教程之前对github有个简单的了解,能帮助你更好地使用本教程。
本教程将以一个实时聊天应用为例子,通过对这个应用进行不同的修改来展示pomelo框架的一些功能特性,让用户能大致了解pomelo,熟悉并能够使用pomelo进行应用程序的开发。
本教程假定你使用的开发环境是类Unix系统,如果你使用的Windows系统,希望你能够知道相关的对应方式,比如一些.sh脚本,在Windows下会使用一个同名的bat文件,本教程中对于Windows系统,不做特殊说明。
为什么是聊天?
Pomelo是游戏服务器框架,本质上也是高实时、可扩展、多进程的应用框架。除了在提供的库部分有一部分游戏专用的库,其余部分框架完全可用于开发高实时的应用。而且与现在有的node.js高实时应用框架如derby、socketstream、meteor等比起来有更好的可伸缩性。
由于游戏在场景管理、客户端动画等方面有一定的复杂性,并不适合作为pomelo的入门应用。对于大多数开发者而言,node.js的入门应用都是一个基于socket.io开发的普通聊天室, 由于它是基于单进程的node.js开发的, 在可扩展性上打了一定折扣。
因此,我们也选择做一个聊天应用来作为教程的例子,而基于pomelo框架开发的聊天应用天生就是多进程的,可以非常容易地扩展服务器类型和数量。
教程内容
在之前的章节中,我们已经看到了HelloWorld项目,对如何使用pomelo开发应用程序应该有了一个初步的印象。在这个教程里面,我们将以一个使用pomelo开发的实时聊天应用为示例,来依次展示如何在pomelo增加一个filter、进行route压缩、rpc调用和使用protobuf等。这些例子仅仅是为了展示pomelo框架的特性,所以并不具有很强的实用性, 只是希望用户通过对这些例子的学习,可以熟悉pomelo各个特性的使用,给用户一个直观的认识,使得用户也能按照例子的方式,使用pomelo提供的功能。其大致内容包括以下部分:
- 我们首先会对pomelo中常见的一些术语进行一个简要的解释;
- 从github获得一个现成的分布式聊天应用,我们对其源码进行分析,然后让其运行起来;
- 对我们的聊天应用的服务器进行扩展,使用多个服务器来完成我们的应用;
- 给原来的应用增加一个filter,来实现我们想要的功能,同时学会filter在pomelo中的使用;
- pomelo提供了route压缩,尝试在我们的应用里使用route压缩,同时学会如何在pomelo中使用route压缩功能;
- pomelo提供了基于protobuf的消息压缩,尝试将其运用到我们的项目中,同时学会如何在pomelo中使用基于protobuf的消息压缩;
- 增加一个获取时间的rpc服务,当然功能上纯粹属于“画蛇添足”,不过这里是出于演示如何使用rpc的目的;
- 尝试给pomelo增加一个HelloWorld component,目的同上,只是为了演示如何给pomelo扩展组件,从而学会给pomelo扩展自定义组件;
- 增加一个admin-module,以演示如何使用admin-module来扩展pomelo的服务器管理监控框架;
- 最后是关于pomelo的一些杂项以及总结。
当完成上面的教程后,相信你已经能够熟练使用pomelo提供的各项特性做一些开发了,这也是本教程要达到的目的。更深入的探讨可以参阅开发指南,或者直接阅读源码都是可以的。下面进入下一步,我们将对pomelo中的一些术语进行简单的解释。