之前項目需要做一個推送功能横堡,最開始我沒有想過用第三方推送服務。想著可以用已知技術方式完成冠桃,例如定時到服務器看看是否有新的消息命贴,有的話,就讀取下來并顯示,但是這種方式很浪費客戶以及服務器的資源胸蛛,當然這種方式在我們項目里是不可取的污茵。再后來我在網(wǎng)上搜了一些,說是可以用web socket實現(xiàn)我的功能葬项,但是我在網(wǎng)上查了一下使用方式泞当,看了一上午一頭霧水。即使我可以一周兩周內(nèi)用websocket實現(xiàn)我的推送民珍,那我又拿什么來保證我自己寫的推送程序的到達率和速度呢襟士?維護成本一定也會隨著增加!況且我們也不允許花太多開發(fā)成本在這個項目上嚷量!
經(jīng)過上面的一番周折后陋桂,我跟項目組提出使用第三方的推送服務,原因很簡單津肛,第三方推送服務可以滿足我們的需求章喉,縮短我們的開發(fā)測試維護成本汗贫,術業(yè)有專攻身坐,它們在推送方面更有優(yōu)勢,服務質(zhì)量也有保證落包!經(jīng)過幾番對比后部蛇,我們最終決定使用了GoEasy推送。它真正的從根本上解決了我們的問題咐蝇!對于他們的服務質(zhì)量很滿意涯鲁,注冊成功后,你可以獲得他們的聯(lián)系方式有序,問題處理得很及時抹腿,不像有些公司的客服,發(fā)封郵件好幾天都沒有任何信息旭寿!從而也解決了我們的后顧之憂警绩!
寫這篇文章的目的很簡單,希望其他同行在做實時推送時少走些彎路盅称!好的東西應該分享給更多人肩祥!
下面我將會分四部分來說明一下如何用GoEasy實現(xiàn)實時推送!如果大家有任何問題缩膝,可以發(fā)我私人郵箱wwweso@163.com混狠!
1.從GoEasy獲取appkey
appkey是驗證用戶的有效性的唯一標識。
?注冊賬號疾层。GoEasy官網(wǎng):https://goeasy.io
?用注冊好的賬號登錄到GoEasy的后臺管理系統(tǒng)将饺,創(chuàng)建您自己應用(application).
?Application創(chuàng)建好之后系統(tǒng)會自動為您生成appkey
系統(tǒng)會生成兩個keys,一個Super key和一個Subscribe key;它們的區(qū)別在于前者既可以訂閱又可以推送俯逾,但后者只能用于訂閱贸桶。
2.GoEasy實現(xiàn)向特定用戶群推送的原理
知道了他們的推送原理,可以更加方便我們了解他們的服務桌肴,以及理解我們寫的代碼皇筛。其實原理很簡單,只需要確定哪些用戶需要接收信息坠七,然后讓這些用戶都訂閱一個相同的channel(頻道)水醋。然后再往這個平臺上推送消息即可!所有關鍵在于channel彪置,channel一致拄踪,則可以接收到信息,否則收不到拳魁!
對于訂閱必須要的信息有:Appkey, channel
對于推送必須要的信息有:Appkey, channel, content
3.用GoEasy實現(xiàn)訂閱(接收)的實例
實現(xiàn)步驟:
1.引入goeasy.js
2.創(chuàng)建goeasy實例/對象
3.用subscribe函數(shù)進行訂閱惶桐,然后在回調(diào)函數(shù)里接收信息即可
實戰(zhàn):
有了這幾行代碼后,只要保證網(wǎng)絡暢通的情況下潘懊,頁面會自動彈出你從任何平臺上推送的信息姚糊。
4.用GoEasy實現(xiàn)推送及接收的實例
目前GoEasy支持三種推送方式:Java后臺推送(它們有提供JAVA SDK和maven遠程倉庫),JS推送授舟,RestAPI推送(有了RestAPI救恨,我們就可以用PHP, .NET, Ruby…來推送信息了,很方便)
說了這么多释树,來我們看一下怎么用GoEasy的三種方式分別實現(xiàn)推送吧肠槽。
4.1.用GoEasy SDK推送
a.Java SDK的獲取方式
方式一,直接在goeasy的官網(wǎng)上進行下載奢啥;方式二秸仙,用maven遠程庫直接導入到項目中。盡管官網(wǎng)上已經(jīng)做了相同的說明了桩盲,我這里還是把關鍵點帖出來寂纪,方便大家查看。
GoEasy SDK下載鏈接:http://maven.goeasy.io/service/local/artifact/maven/redirect?r=releases&g=io.goeasy&a=goeasy-sdk&v=LATEST&e=jar
GoEasy遠程maven庫的配置:
需要注意的是:GoEasy需要依賴兩個額外的jar包:
gson.jar: http://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.3.1/gson-2.3.1.jar
slf4j-api.jar: http://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar
b.實例化GoEasy對象
??? GoEasy goEasy = new GoEasy("your appkey");
c.推送消息
??? goEasy.publish('your_channel', '第一條用GoEasy推送的消息正驻,你真棒弊攘!');
4.2.JS推送
a.引入goeasy.js
b.實例化Goeasy對象,并用publish函數(shù)進行推送
4.3.用RestAPI進行推送
URL: https://goeasy.io/goeasy/publish
Method: Post
參數(shù):appkey, channel, content
例如:https://goeasy.io/goeasy/publish?appkey={your_appkey}&channel={your_channel}&content={your_message}
GoEasy官網(wǎng):https://goeasy.io
快速入門:https://goeasy.io/www/started.jsp
文檔下載:https://goeasy.io/www/docs.jsp