用Pomelo 搭建乙個簡易的推送平台

2021-06-26 08:24:02 字數 2983 閱讀 2233

實際上,個人感覺,pomelo 目前提供的兩個預設sioconnectorhybridconnector使用的協議並不適合用於做手機推送平台,在pomelo的乙份公開ppt裡面,有提到過, 網易的訊息推送平台是基於pomelo開發的 (乙個frontend 支援30w 長連線,消耗了3g 記憶體,如果我沒記錯資料應該是這樣),不過,這裡用的前端(frontend)實現的是基於mqtt協議,我估計這個基於mqtt協議實現的frontend,基本不可能開源出來.這裡只是說,預設提供的frontend不適合用於構建大型的推送平台(c10m規模的),一般而言(c10k級別的),個人感覺還是夠用的.

為了展示,更多pomelo 的相關特性,可能這裡的邏輯業務,與實際有所不同.敬請注意

整個應用的架構圖:

123

45

發給web management

123

45

發給android客戶端

123

4

android:

connector route = sio-connector.entryhandler.enter, 用於把當前客戶端加入到推送頻道當中

webmanagement:

connector route = hybrid-connector.entryhandler.enter,用於連線伺服器. 

backend route = pushserver.pushhandler.pushall, 把訊息推送到所有已連線的客戶端.

pomelo 有個特點,就是約定開發,很多地方是約定好的配置,優點是,架構清晰,可讀性好,缺點是,需要大量的文件支援,目前而言,pomelo的官方文件做的不好的地方就是,雖然文件都有了,但是太零散了,分類不清楚,還有就是文件沒跟上開發,有時候,你不閱讀裡面原始碼根本不知道這個api要傳那些引數.

由於pomelo 0.3 以後新增了乙個新的connector:hybridconnector,支援socket和websocket,使用二進位制通訊協議,但是除了,網頁js版本和c 客戶端實現了這個connector,其他客戶端均還沒實現,所以,我們還需要乙個相容android 客戶端的connector: siocnnector,關於兩個connector 具體比較,以後有空重寫這篇的時候,暫時,你只要知道,這個兩個connector,乙個基於socket.io,乙個基於socket和websocket 即可.

123

4567

891011

1213

1415

1617

1819

// 支援 socket.io

);});//支援 websocket 和 socket

);});

經過這樣的配置,我們就能夠使用兩個不同的connector了.

用pomelo 進行訊息的推送,非常便捷,由於,我們現在只關注推訊息給全部客戶端,那樣就非常簡單了.

推送流程:

為了教學的方便,這裡的uuid 硬編碼為: ***-xx--xx-xx

把客戶端新增到相應的channel

123

4567

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 新增客戶端到相應頻道的方法.

123

4567

891011

1213

//sid 統一為web managment 所在的 frontend server.

if(err)

if(users));

}else);

}});

web 管理端呼叫訊息推送

123

4567

891011

12

handler.prototype.pushall = function(msg, session, next), function(err) else);

}});

};

以上就是主要客戶端如何加入到推送佇列的**,以及web 管理端進行訊息推送的主要**,是不是很簡單! 完整**可以參閱我的github 

有一點要注意的,如果pomelo 專案要部署到外網或者區域網,frontend 的host 要填寫當前host 主機的ip 位址

例如:

1

23

"connector": [

]

部署到某台伺服器,需要修改

1

23

"connector": [

]

客戶端訪問相應的host 的位址.

如果,你現在對pomelo感興趣的話,你可以看下我寫的pomelo 的系列教程(因為還沒寫好所以暫時只發布在我的部落格)暫時一共四篇.基本涵蓋了pomelo 大部分基本知識點.

參與的相關社群:

github: 

cnodejs(top積分榜 14 ...): 

用Pomelo 搭建乙個簡易的推送平台

src 實際上,個人感覺,pomelo 目前提供的兩個預設sioconnector和hybridconnector使用的協議並不適合用於做手機推送平台,在pomelo的乙份公開ppt裡面,有提到過,網易的訊息推送平台是基於pomelo開發的 乙個frontend 支援30w 長連線,消耗了3g 記憶...

使用python flask搭建乙個簡易的伺服器

之前使用flask搭建了乙個簡易的伺服器,記錄如下 匯入需要的庫 coding utf 8 from flask import flask from flask import request,json import json from pil import image from download i...

用canvas繪製乙個簡易時鐘

在見識了html5中canvas的強大,筆者準備製作乙個簡易時鐘。下面就是成果啦,製作之前我們先分析一下,繪製乙個時鐘需要做哪些準備。一 1.首先這個時鐘分為表盤,指標 時針,分針,秒針 和數字三部分。2.表盤是個圓,這個簡單。3.繪製指標時,需要先獲取到系統時間,然後找到時間和角度的關係。4.然後...