Web實(shí)時(shí)推送實(shí)現(xiàn)總結(jié)

之前項(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評(píng)論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,275評(píng)論 6 342
  • spring官方文檔:http://docs.spring.io/spring/docs/current/spri...
    牛馬風(fēng)情閱讀 1,856評(píng)論 0 3
  • 使用背景: 本人做了一個(gè)類似QQ空間的DEMO,可以發(fā)表動(dòng)態(tài)等等,但是苦于沒辦法實(shí)時(shí)更新是否有人發(fā)了動(dòng)態(tài),然后要通...
    CSU_IceLee閱讀 1,651評(píng)論 2 7
  • 若是沒有相遇,我們是否都會(huì)安好? 淮揚(yáng)河畔,霜月齊霽 皎潔的月,輕煙似的云,像是淡墨暈染了宣紙。清風(fēng)徐徐地吹,吹散...
    浮世墨染閱讀 898評(píng)論 4 9

友情鏈接更多精彩內(nèi)容