之前項(xiàng)目需要做一個(gè)推送功能,最開始我沒有想過用第三方推送服務(wù)。想著可以用已知技術(shù)方式完成,例如定時(shí)到服務(wù)器看看是否有新的消息,有的話,就讀取下來并顯示,但是這種方式很浪費(fèi)客戶以及服務(wù)器的資源,當(dāng)然這種方式在我們項(xiàng)目里是不可取的。再后來我在網(wǎng)上搜了一些,說是可以用web socket實(shí)現(xiàn)我的功能,但是我在網(wǎng)上查了一下使用方式,看了一上午一頭霧水。即使我可以一周兩周內(nèi)用websocket實(shí)現(xiàn)我的推送,那我又拿什么來保證我自己寫的推送程序的到達(dá)率和速度呢?維護(hù)成本一定也會(huì)隨著增加!況且我們也不允許花太多開發(fā)成本在這個(gè)項(xiàng)目上!
經(jīng)過上面的一番周折后,我跟項(xiàng)目組提出使用第三方的推送服務(wù),原因很簡單,第三方推送服務(wù)可以滿足我們的需求,縮短我們的開發(fā)測試維護(hù)成本,術(shù)業(yè)有專攻,它們?cè)谕扑头矫娓袃?yōu)勢,服務(wù)質(zhì)量也有保證!經(jīng)過幾番對(duì)比后,我們最終決定使用了GoEasy推送。它真正的從根本上解決了我們的問題!對(duì)于他們的服務(wù)質(zhì)量很滿意,注冊(cè)成功后,你可以獲得他們的聯(lián)系方式,問題處理得很及時(shí),不像有些公司的客服,發(fā)封郵件好幾天都沒有任何信息!從而也解決了我們的后顧之憂!
寫這篇文章的目的很簡單,希望其他同行在做實(shí)時(shí)推送時(shí)少走些彎路!好的東西應(yīng)該分享給更多人!
下面我將會(huì)分四部分來說明一下如何用GoEasy實(shí)現(xiàn)實(shí)時(shí)推送!如果大家有任何問題,可以發(fā)我私人郵箱wwweso@163.com!
1.從GoEasy獲取appkey
appkey是驗(yàn)證用戶的有效性的唯一標(biāo)識(shí)。
?注冊(cè)賬號(hào)。GoEasy官網(wǎng):https://goeasy.io
?用注冊(cè)好的賬號(hào)登錄到GoEasy的后臺(tái)管理系統(tǒng),創(chuàng)建您自己應(yīng)用(application).
?Application創(chuàng)建好之后系統(tǒng)會(huì)自動(dòng)為您生成appkey
系統(tǒng)會(huì)生成兩個(gè)keys,一個(gè)Super key和一個(gè)Subscribe key;它們的區(qū)別在于前者既可以訂閱又可以推送,但后者只能用于訂閱。
2.GoEasy實(shí)現(xiàn)向特定用戶群推送的原理
知道了他們的推送原理,可以更加方便我們了解他們的服務(wù),以及理解我們寫的代碼。其實(shí)原理很簡單,只需要確定哪些用戶需要接收信息,然后讓這些用戶都訂閱一個(gè)相同的channel(頻道)。然后再往這個(gè)平臺(tái)上推送消息即可!所有關(guān)鍵在于channel,channel一致,則可以接收到信息,否則收不到!
對(duì)于訂閱必須要的信息有:Appkey, channel
對(duì)于推送必須要的信息有:Appkey, channel, content
3.用GoEasy實(shí)現(xiàn)訂閱(接收)的實(shí)例
實(shí)現(xiàn)步驟:
1.引入goeasy.js
2.創(chuàng)建goeasy實(shí)例/對(duì)象
3.用subscribe函數(shù)進(jìn)行訂閱,然后在回調(diào)函數(shù)里接收信息即可
實(shí)戰(zhàn):

有了這幾行代碼后,只要保證網(wǎng)絡(luò)暢通的情況下,頁面會(huì)自動(dòng)彈出你從任何平臺(tái)上推送的信息。
4.用GoEasy實(shí)現(xiàn)推送及接收的實(shí)例
目前GoEasy支持三種推送方式:Java后臺(tái)推送(它們有提供JAVA SDK和maven遠(yuǎn)程倉庫),JS推送,RestAPI推送(有了RestAPI,我們就可以用PHP, .NET, Ruby…來推送信息了,很方便)
說了這么多,來我們看一下怎么用GoEasy的三種方式分別實(shí)現(xiàn)推送吧。
4.1.用GoEasy SDK推送
a.Java SDK的獲取方式
方式一,直接在goeasy的官網(wǎng)上進(jìn)行下載;方式二,用maven遠(yuǎn)程庫直接導(dǎo)入到項(xiàng)目中。盡管官網(wǎng)上已經(jīng)做了相同的說明了,我這里還是把關(guān)鍵點(diǎn)帖出來,方便大家查看。
GoEasy SDK下載鏈接:http://maven.goeasy.io/service/local/artifact/maven/redirect?r=releases&g=io.goeasy&a=goeasy-sdk&v=LATEST&e=jar
GoEasy遠(yuǎn)程maven庫的配置:

需要注意的是:GoEasy需要依賴兩個(gè)額外的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.實(shí)例化GoEasy對(duì)象
??? GoEasy goEasy = new GoEasy("your appkey");
c.推送消息
??? goEasy.publish('your_channel', '第一條用GoEasy推送的消息,你真棒!');
4.2.JS推送
a.引入goeasy.js

b.實(shí)例化Goeasy對(duì)象,并用publish函數(shù)進(jìn)行推送

4.3.用RestAPI進(jìn)行推送
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