一、通信類
-------------------------------------
目前Pomelo服務器提供兩類connector:sioconnector和hybridconnector,分別對於基於socket.io和二進制的通信。
1.1 sioconnector
支持基於socket.io的通信協議,也是Pomelo框架默認採用的connector(主要是兼容老版本)。以前基於socket.io的服務器和客戶端代碼不用修改就可使用(默認使用)。
1.2 hybridconnector
支持socket和websocket,使用二進制通信協議,而且支持route字典壓縮和protobuf壓縮的connector,須要在app.js中顯式配置。
-------------------------------------
二、通方式類
-------------------------------------
pomelo的客戶端和服務器之間的通信能夠分爲三種:
request-response
pomelo中最經常使用的就是request-response模式,客戶端發送請求,服務器異步響應。客戶端的請求發送形式相似ajax相似:
pomelo.request(url, msg, function(data){});
第一個參數爲請求地址,完整的請求地址主要包括三個部分:服務器類型、服務端相應的文件名及對應的方法名。第二個參數是消息體,消息體爲json格式,第三個參數是回
調函數,請求的響應將會把結果置入這個回調函數中返回給客戶端。
notify
notify與request—response相似,惟一區別是客戶端只負責發送消息到服務器,客戶端不接收服務器的消息響應。
pomelo.notify(url, msg);
push
push則是服務器主動向客戶端進行消息推送,客戶端根據路由信息進行消息區分,轉發到後。一般遊戲服務器都會發送大量的這類廣播。
pomelo.on(route, function(data){});
以上是javascript的api, 其它客戶端的API基本與這個類型。因爲API與ajax極其相似,全部web應用的開發者對此都不陌生。
-------------------------------------
三、會話機制Session
-------------------------------------
SessionService 是隻存在於前端服務器(frontend),session 以每一個客戶端請求自增1的形式生成 ,用於管理鏈接 pomelo的客戶端,若是在前端服務器不進行相關控制對於每一個請求都會產生一個Session,就是說客戶端都會在前端的服務器(frontend)裏的sessionService產生一個會話,值得注意的是自pomelo0.4.x支持了支持同一帳號多處登陸,因此seesionService 裏面的session 對應的是一個session數組,若是,對session不作任何處理的話,沒刷新一次頁面,都會對這個session 數組自增 1.從暴露的api,咱們能夠看出,這個SessionService 能夠用於對鏈接在前端服務器的客戶端,踢下線,或者利用session id 直接在前端服務器發消息給客戶端。
LocalSessionService 因爲SessionService只存在於前端服務器(frontend),若是想在後端服務器(Backend)操做SessionService的話,就須要一個代理類(由於這是兩個進程),從源碼中能夠看到,這個就是從前端服務器複製出來用於backend進行操做的SessionService,主要用於獲取踢客戶端下線,或者獲取相關客戶端Session Id。
LocalSession 是用於咱們自定義的id 與全局 sessionService進行管理的類。主要用於服務端對客戶端之間會話的管理。
從api 文檔暴露的接口咱們能夠得知主要做用:
讓咱們自定義的id 能夠綁定到客戶端與服務端之間的會話,用於管理客戶端的狀態。例如,利用綁定的id實現控制對客戶端進行踢掉,監聽session的關閉事件。
localSession 還提供了一個K/V 的數據存取操做 須要用push或者pushAll 對sessionSerive進行更新。可是,根據官方的回覆,不建議把session當作內存庫。
通常狀況下session在connector裏面賦值,供他服務器使用,後端服務器session爲localsession
-------------------------------------
四、handler接口
-------------------------------------
handler接口固定:function(msg,session,next)
msg爲客戶端要傳遞的參數,格式爲json
session由pomelo自動傳遞
next(null,{route:msg.route}),null表明錯誤信息,沒錯誤信息,就返回null
-------------------------------------
五、remote接口
-------------------------------------
remote接口不固定用於服務器之間通訊
-------------------------------------
javascript