以前項目須要作一個推送功能,最開始我沒有想過用第三方推送服務。想着能夠用已知技術方式完成,例如定時到服務器看看是否有新的消息,有的話,就讀 取下來並顯示,可是這種方式很浪費客戶以及服務器的資源,固然這種方式在咱們項目裏是不可取的。再後來我在網上搜了一些,說是能夠用web socket實現個人功能,可是我在網上查了一下使用方式,看了一上午一頭霧水。即便我能夠一週兩週內用websocket實現個人推送,那我又拿什麼來 保證我本身寫的推送程序的到達率和速度呢?維護成本必定也會隨着增長!何況咱們也不容許花太多開發成本在這個項目上!javascript
通過上面的一番周折後,我跟項目組提出使用第三方的推送服務,緣由很簡單,第三方推送服務能夠知足咱們的需求,縮短咱們的開發測試維護成本,術業有 專攻,它們在推送方面更有優點,服務質量也有保證!通過幾番對比後,咱們最終決定使用了GoEasy推送。 它真正的從根本上解決了咱們的問題!對於他們的服務質量很滿意,註冊成功後,你能夠得到他們的聯繫方式,問題處理得很及時,不像有些公司的客服,發封郵件 好幾天都沒有任何信息!從而也解決了咱們的後顧之憂!java
知道了他們的推送原理,能夠更加方便咱們瞭解他們的服務,以及理解咱們寫的代碼。其實原理很簡單,只須要肯定哪些用戶須要接收信息,而後讓這些用戶 都訂閱一個相同的channel(頻道)。 而後再往這個平臺上推送消息便可!全部關鍵在於channel,channel一致,則能夠接收到信息,不然收不到!服務器
對於訂閱必需要的信息有:Appkey, channel對於推送必需要的信息有:Appkey, channel, contentwebsocket
廢話很少說,直接進入正題,如何實現:網絡
appkey是驗證用戶的有效性的惟一標識。app
註冊帳號: GoEasy官網: https://goeasy.iosocket
用註冊好的帳號登陸到GoEasy的後臺管理系統,建立您本身應用(application).
Application建立好以後系統會自動爲您生成appkeyjsp
系統會生成兩個keys,一個Super key和一個Subscribe key;它們的區別在於前者既能夠訂閱又能夠推送,但後者只能用於訂閱。maven
<script type="text/javascript" src="https://cdn.goeasy.io/goeasy.js"></script> <script type="text/javascript"> var goEasy = new GoEasy({appkey: 'your appkey'}); goEasy.subscribe({ channel: 'your_channel', onMessage: function(message){ alert('接收到消息:'+message.content);//拿到了信息以後,你能夠作你任何想作的事 } }); </script>
有了這幾行代碼後,只要保證網絡暢通的狀況下,頁面會自動彈出你從任何平臺上推送的信息。
目前GoEasy支持三種推送方式: Java後臺推送(它們有提供JAVA SDK和 maven遠程倉庫), JS推送,RestAPI推送(有了RestAPI,咱們就能夠用PHP, .NET, Ruby…來推送信息了,很方便)
說了這麼多,來咱們看一下怎麼用GoEasy的三種方式分別實現推送吧.
引入GoEasy SDK
方式一,直接在goeasy的官網上進行下載. GoEasy SDK下載連接:<http://maven.goeasy.io/service/local/artifact/maven/redirect?r=releases&g=io.goeasy&a=goeasy-sdk&v=LATEST&e=jar> 方式二,用maven遠程庫直接導入到項目中,下面是GoEasy遠程maven庫的配置
<repository> <id>goeasy</id> <name>goeasy</name> <url>http://maven.goeasy.io/content/repositories/releases/</url> </repository> … <dependency> <groupId>io.goeasy</groupId> <artifactId>goeasy-sdk</artifactId> <version>0.3.1</version> </dependency>
實例化GoEasy對象並推送
GoEasy goEasy = new GoEasy("your appkey"); goEasy.publish('your_channel', 'First message');
引入goeasy.js
<script type="text/javascript" src="https://cdn.goeasy.io/goeasy.js"></script>
實例化Goeasy對象,並用publish函數進行推送
<script type="text/javascript"> var goEasy = new GoEasy({appkey: 'your appkey'}); goEasy. publish ({ channel: 'your_channel', message: 'Second message!' }); </script>
URL: https://goeasy.io/goeasy/publish
Method: post
參數:appkey, channel, content
例如: https://goeasy.io/goeasy/publish?appkey={your_appkey}&channel={your_channel}&content={your_message}
GoEasy官網: https://goeasy.io