欧美另类日韩中文色综合,天堂va亚洲va欧美va国产,www.av在线播放,大香视频伊人精品75,奇米777888,欧美日本道免费二区三区,中文字幕亚洲综久久2021

Hello Pomleo淺析之 gameserver -電腦資料

電腦資料 時間:2019-01-01 我要投稿
【m.lotusphilosophies.com - 電腦資料】

    我們來看最簡單的pomelo框架的game-server部分,先上結構圖

   

    1 app 這是服務器擴展的目錄,前臺,邏輯相關的部分以后都會放到這個里面

    2 config pomelo的服務器配置文件,通過pomelo框架,可以將此文件夾里面的json文件的配置直接用在對應的服務上

    3 logs 服務器日志文件

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

    5 app.js 應用程序入口

    6 package.json 定義了整個應用的依賴,以及應用程序的信息

    先看app.js這個入口,它的代碼也是非常的簡潔<喎?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的服務,并對其進行初始化app.configure('production|development', 'connector', function(){ app.set('connectorConfig', { connector : pomelo.connectors.hybridconnector, heartbeat : 3, useDict : true, useProtobuf : true });});// 啟動整個appapp.start();// 異常捕捉process.on('uncaughtException', function (err) { console.error(' Caught exception: ' + err.stack);});

    其實程序員們沒干什么事情,完全是由pomelo框架來進行處理

    再來看config

   

    這個里面是pomelo的幾大核心組件的配置文件了,在hello pomelo里面master.json和servers.json2個配置文件都有效,它們分別對應master服務和app里面我們擴展的服務.

    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與其響應

   

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

    clientHost與上一講中的客戶端連接時指定的ip地址相同,clientport與上一講web-server中的靜態(tài)頁面要連接的端口相同,這樣就可以接受來自網(wǎng)頁的連接了,由此可見,這個connetctor就是負責與客戶端連接的服務器了.上一講中講到了客戶端向服務器發(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目錄的結構

   

    實際上它用戶的就是服務器下的這個connector的handler的入口,非常的直觀,來看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打印出來,這樣可以在輸出里面看到客戶端發(fā)送過來的請求 console.log(entry client request =  + msg);  next(null, {code: 200, msg: 'game server is ok.'});}; // 客戶端也可以調(diào)用這個方法,各位可以試試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)用這個方法,各位可以試試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處理了客戶端的連接請求,并且也對其請求進行了答應.

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

    從理論上來講,這些connector負責承載客戶端連接,它的后面應該還有具體的邏輯服務器來處理具體的應用.

    從hello pomelo來看,我們得出的是以下的hellopomelo的結構圖

   

    好了各位看官,這就是hellopomelo的結構圖.

    在此總結一下,pomelo是一個以node.js以及express為基礎的服務器框架,利用它可以很輕松的搭建基于websocket的服務器后臺.

    然后從這個例子來看它是分布式的,可擴展性很好.

最新文章