中文国产日韩欧美视频,午夜精品999,色综合天天综合网国产成人网,色综合视频一区二区观看,国产高清在线精品,伊人色播,色综合久久天天综合观看

Hello Pomleo淺析之 gameserver -電腦資料

電腦資料 時(shí)間:2019-01-01 我要投稿
【www.szmdbiao.com - 電腦資料】

    我們來(lái)看最簡(jiǎn)單的pomelo框架的game-server部分,先上結(jié)構(gòu)圖

   

    1 app 這是服務(wù)器擴(kuò)展的目錄,前臺(tái),邏輯相關(guān)的部分以后都會(huì)放到這個(gè)里面

    2 config pomelo的服務(wù)器配置文件,通過(guò)pomelo框架,可以將此文件夾里面的json文件的配置直接用在對(duì)應(yīng)的服務(wù)上

    3 logs 服務(wù)器日志文件

    4 node_modules:這是非常重要的pomelo框架放置的地方

    5 app.js 應(yīng)用程序入口

    6 package.json 定義了整個(gè)應(yīng)用的依賴,以及應(yīng)用程序的信息

    先看app.js這個(gè)入口,它的代碼也是非常的簡(jiǎn)潔<喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:java;">var pomelo = require('pomelo'); // 引入pomelo框架/** * Init app for client. */var app = pomelo.createApp();app.set('name', 'HelloWorld');// app configuration 配置類型為connector的服務(wù),并對(duì)其進(jìn)行初始化app.configure('production|development', 'connector', function(){ app.set('connectorConfig', { connector : pomelo.connectors.hybridconnector, heartbeat : 3, useDict : true, useProtobuf : true });});// 啟動(dòng)整個(gè)appapp.start();// 異常捕捉process.on('uncaughtException', function (err) { console.error(' Caught exception: ' + err.stack);});

    其實(shí)程序員們沒(méi)干什么事情,完全是由pomelo框架來(lái)進(jìn)行處理

    再來(lái)看config

   

    這個(gè)里面是pomelo的幾大核心組件的配置文件了,在hello pomelo里面master.json和servers.json2個(gè)配置文件都有效,它們分別對(duì)應(yīng)master服務(wù)和app里面我們擴(kuò)展的服務(wù).

    servers.json的內(nèi)容如下

<code class="hljs" json="">{  development:{    connector: [    {id: connector-server-1, host: 127.0.0.1, port: 3150, clientHost: 127.0.0.1, clientPort: 3010, frontend: true}    ]  },  production:{    connector: [    {id: connector-server-1, host: 127.0.0.1, port: 3150, clientHost: 127.0.0.1, clientPort: 3010, frontend: true}    ]  }}</code>

    app/servsers/connector與其響應(yīng)

   

    這個(gè)配置的內(nèi)容指定了connector的ip以及監(jiān)聽(tīng)端口,

    clientHost與上一講中的客戶端連接時(shí)指定的ip地址相同,clientport與上一講web-server中的靜態(tài)頁(yè)面要連接的端口相同,這樣就可以接受來(lái)自網(wǎng)頁(yè)的連接了,由此可見(jiàn),這個(gè)connetctor就是負(fù)責(zé)與客戶端連接的服務(wù)器了.上一講中講到了客戶端向服務(wù)器發(fā)起連接的代碼如下

<code class="hljs" xml=""><script. type=text/javascript>      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);          });        });      }    </script></code>

    看看我們game-server下的app目錄的結(jié)構(gòu)

   

    實(shí)際上它用戶的就是服務(wù)器下的這個(gè)connector的handler的入口,非常的直觀,來(lái)看entryHandler.js的代碼

<code class="hljs" javascript="">module.exports = function(app) {  return new Handler(app);};var Handler = function(app) {  this.app = app;}; // 這就是客戶端調(diào)用的方法Handler.prototype.entry = function(msg, session, next) { //修改一下這里,把msg打印出來(lái),這樣可以在輸出里面看到客戶端發(fā)送過(guò)來(lái)的請(qǐng)求 console.log(entry client request =  + msg);  next(null, {code: 200, msg: 'game server is ok.'});}; // 客戶端也可以調(diào)用這個(gè)方法,各位可以試試Handler.prototype.publish = function(msg, session, next) {    var result = {        topic: 'publish',        payload: JSON.stringify({code: 200, msg: 'publish message is ok.'})    };  next(null, result);};  // 客戶端也可以調(diào)用這個(gè)方法,各位可以試試Handler.prototype.subscribe = function(msg, session, next) {    var result = {        topic: 'subscribe',        payload: JSON.stringify({code: 200, msg: 'subscribe message is ok.'})    };  next(null, result);};</code>

    OK,到此為止,可以看到connector的Handler處理了客戶端的連接請(qǐng)求,并且也對(duì)其請(qǐng)求進(jìn)行了答應(yīng).

    由此可見(jiàn),在pomelo中,要處理客戶端只要掛載handler模塊,然后在其中添加方法就OK了,只要這些方法能夠被客戶端給調(diào)用到,而且為了簡(jiǎn)潔hello pomelo中只有前端服務(wù)器(即暴露給客戶端連接的服務(wù)器),沒(méi)有后端(不暴露給客戶端,只能由前端服務(wù)器訪問(wèn)的服務(wù)器).

    從理論上來(lái)講,這些connector負(fù)責(zé)承載客戶端連接,它的后面應(yīng)該還有具體的邏輯服務(wù)器來(lái)處理具體的應(yīng)用.

    從hello pomelo來(lái)看,我們得出的是以下的hellopomelo的結(jié)構(gòu)圖

   

    好了各位看官,這就是hellopomelo的結(jié)構(gòu)圖.

    在此總結(jié)一下,pomelo是一個(gè)以node.js以及express為基礎(chǔ)的服務(wù)器框架,利用它可以很輕松的搭建基于websocket的服務(wù)器后臺(tái).

    然后從這個(gè)例子來(lái)看它是分布式的,可擴(kuò)展性很好.

最新文章