由于才接触nodejs几天,看源码时各种细节和设计方法都得熟悉下。结合chatofpomelo-websocket,先从pomelo的使用入口开始看。
一、chatofpomelo的开启流程
Pomelo.createApp出来Application,然后Application.start就开启了。
createApp时会调Application.init来做初始化。
init里调AppUtil.defaultConfiguration来读入默认配置。例如从master.json里读入master配置(Application.master),从servers.json里读入服务器集群各进程的type、host和port配置(可以通过Application.get("__serverMap__")获取)。
二、组件的挂载
组件放在components目录下。各组件可以通过Pomelo.components或者直接通过Pomelo来按名取。也可以通过Application.components来按名取(每个组件的名字在自己的name属性里,通常为js文件名加前后双下划线,例如connector.js的组件名为“__connector__”)。
下面看下组件的挂载和运行。
Pomelo里会遍历componets目录里的各个js文件,然后require到Pomelo里和Pomelo.components里。
Application.start里先调用AppUtil.loadDefaultComponents,loadDefaultComponents里会根据Application.serverType来Application.load需要的components。
Application.load里会将Pomelo里的components放到自己的components里。
Application.start/stop/afterStart等方法会统一执行各components里的对应start/stop/afterStart等方法。
三、ps
这篇发表后,在google里搜了下(我的一点恶趣味:经常发表随笔后会看看搜索引擎收录了没)“pomelo 源码分析 组件”,发现了pomelo官方wiki里关于组件的说明,奇怪之前准备看组件时没搜到。分析源码之前也浏览了下官方wiki,应该是偏向于了解大概了,各细节没了太大印象。
不过官方已经有了也没关系,随笔给人参考的价值变小后,就当自己的笔记吧。
另外网上也有些pomelo的源码分析了,但是看了眼,跟我想要的不太一样。
附官方组件wiki:
-
Pomelo-Framework里的组件部分:https://github.com/NetEase/pomelo/wiki/Pomelo-Framework
-
Pomelo-组件:https://github.com/NetEase/pomelo/wiki/Pomelo-%E7%BB%84%E4%BB%B6