實際上,個人感覺,pomelo 目前提供的兩個預設sioconnector
和hybridconnector
使用的協議並不適合用於做手機推送平台,在pomelo的乙份公開ppt裡面,有提到過, 網易的訊息推送平台是基於pomelo開發的 (乙個frontend 支援30w 長連線,消耗了3g 記憶體,如果我沒記錯資料應該是這樣),不過,這裡用的前端(frontend)實現的是基於mqtt協議,我估計這個基於mqtt協議實現的frontend,基本不可能開源出來.這裡只是說,預設提供的frontend不適合用於構建大型的推送平台(c10m規模的),一般而言(c10k級別的),個人感覺還是夠用的.
整個應用的架構圖:
12345
發給web management
12345
發給android客戶端
1234
android:
connector route = sio-connector.entryhandler.enter, 用於把當前客戶端加入到推送頻道當中webmanagement:
connector route = hybrid-connector.entryhandler.enter,用於連線伺服器.pomelo 有個特點,就是約定開發,很多地方是約定好的配置,優點是,架構清晰,可讀性好,缺點是,需要大量的文件支援,目前而言,pomelo的官方文件做的不好的地方就是,雖然文件都有了,但是太零散了,分類不清楚,還有就是文件沒跟上開發,有時候,你不閱讀裡面原始碼根本不知道這個api要傳那些引數.backend route = pushserver.pushhandler.pushall, 把訊息推送到所有已連線的客戶端.
由於pomelo 0.3 以後新增了乙個新的connector:hybridconnector,支援socket和websocket,使用二進位制通訊協議,但是除了,網頁js版本和c 客戶端實現了這個connector,其他客戶端均還沒實現,所以,我們還需要乙個相容android 客戶端的connector: sioconnector,關於兩個connector 具體比較,以後有空重寫這篇的時候,暫時,你只要知道,這個兩個connector,乙個基於socket.io,乙個基於socket和websocket 即可.
1234567
891011
1213
1415
1617
1819
// 支援 socket.io);});//支援 websocket 和 socket
);});
經過這樣的配置,我們就能夠使用兩個不同的connector了.
用pomelo 進行訊息的推送,非常便捷,由於,我們現在只關注推訊息給全部客戶端,那樣就非常簡單了.
推送流程:
為了講述的方便,小濤把uuid 硬編碼為: ***-xx—xx-xx
把客戶端新增到相應的channel
1234567
891011
1213
1415
1617
1819
2021
//把客戶端新增到推送列表中pushremote.prototype.add = function(uid, role, sid, channelname, cb)else
//uuid 告訴給服務端onadd 事件
// var server = ;
this.channelservice.pushmessagebyuids('onadd', ,server, function(err)
});}
};
frontend 利用rpc 呼叫pushserver 新增客戶端到相應頻道的方法.
1234567
891011
1213
//sid 統一為web managment 所在的 frontend server.if(err)
if(users));
}else);
}});
web 管理端呼叫訊息推送
1234567
891011
12
handler.prototype.pushall = function(msg, session, next), function(err) else);}});
};
以上就是主要客戶端如何加入到推送佇列的**,以及web 管理端進行訊息推送的主要**,是不是很簡單! 完整**可以參閱最後提供的github 位址.
有一點要注意的,如果pomelo 專案要部署到外網或者區域網,frontend 的host 要填寫當前host 主機的ip 位址
例如:
123
"connector": []
部署到某台伺服器,需要修改
123
"connector": []
用Pomelo 搭建乙個簡易的推送平台
實際上,個人感覺,pomelo 目前提供的兩個預設sioconnector和hybridconnector使用的協議並不適合用於做手機推送平台,在pomelo的乙份公開ppt裡面,有提到過,網易的訊息推送平台是基於pomelo開發的 乙個frontend 支援30w 長連線,消耗了3g 記憶體,如果...
用Pomelo 搭建乙個簡易的推送平台
src 實際上,個人感覺,pomelo 目前提供的兩個預設sioconnector和hybridconnector使用的協議並不適合用於做手機推送平台,在pomelo的乙份公開ppt裡面,有提到過,網易的訊息推送平台是基於pomelo開發的 乙個frontend 支援30w 長連線,消耗了3g 記憶...
推送平台的架構
1 關聯系統呼叫推送介面,1 傳送定時訊息,將進入pg庫。quartz將pg庫中的資料讀取進入mq。2 實時訊息直接進入mq。推送訊息進入pg,拉取的訊息進入mongodb 2 fmsg元件消費mq中的資料,將mq中的資料呼叫mpush的resful介面。mq中的資料按訊息的優先順序劃分topic。...