使用GoEasy實現web實時推送


之前項目需要做一個推送功能,最開始我沒有想過用第三方推送服務。想着可以用已知技術方式完成,例如定時到服務器看看是否有新的消息,有的話,就讀取下來並顯示,但是這種方式很浪費客戶以及服務器的資源,當然這種方式在我們項目里是不可取的。再后來我在網上搜了一些,說是可以用web socket實現我的功能,但是我在網上查了一下使用方式,看了一上午一頭霧水。即使我可以一周兩周內用websocket實現我的推送,那我又拿什么來保證我自己寫的推送程序的到達率和速度呢?維護成本一定也會隨着增加!況且我們也不允許花太多開發成本在這個項目上!

經過上面的一番周折后,我跟項目組提出使用第三方的推送服務,原因很簡單,第三方推送服務可以滿足我們的需求,縮短我們的開發測試維護成本,術業有專攻,它們在推送方面更有優勢,服務質量也有保證!經過幾番對比后,我們最終決定使用了GoEasy推送。 它真正的從根本上解決了我們的問題!對於他們的服務質量很滿意,注冊成功后,你可以獲得他們的聯系方式,問題處理得很及時,不像有些公司的客服,發封郵件好幾天都沒有任何信息!從而也解決了我們的后顧之憂!

 JAVA  Web實時消息后台服務器推送技術

 

廢話不多說,直接進入正題,如何實現:

1. 從GoEasy獲取appkey

appkey是驗證用戶的有效性的唯一標識。

  • 注冊賬號。 GoEasy官網:http://goeasy.io
  • 用注冊好的賬號登錄到GoEasy的后台管理系統,創建您自己應用(application).
  • Application創建好之后系統會自動為您生成appkey

系統會生成兩個keys,一個Super key和一個Subscribe key;它們的區別在於前者既可以訂閱又可以推送,但后者只能用於訂閱。

2. GoEasy實現向特定用戶群推送的原理

知道了他們的推送原理,可以更加方便我們了解他們的服務,以及理解我們寫的代碼。其實原理很簡單,只需要確定哪些用戶需要接收信息,然后讓這些用戶都訂閱一個相同的channel(頻道)。 然后再往這個平台上推送消息即可!所有關鍵在於channel,channel一致,則可以接收到信息,否則收不到!

對於訂閱必須要的信息有:Appkey, channel

對於推送必須要的信息有:Appkey, channel, content

3. 用GoEasy實現訂閱(接收)的實例

 1  <script type="text/javascript" src="https://cdn.goeasy.io/goeasy.js"></script>
 2 
 3                     <script type="text/javascript">
 4             var goEasy = new GoEasy({appkey: 'your appkey'});
 5                                goEasy.subscribe({
 6                         channel: 'your_channel',
 7                         onMessage: function(message){
 8                             alert('接收到消息:'+message.content);//拿到了信息之后,你可以做你任何想做的事
 9                         }
10               });
11   </script>     

   有了這幾行代碼后,只要保證網絡暢通的情況下,頁面會自動彈出你從任何平台上推送的信息。

4. 用GoEasy實現推送及接收的實例

目前GoEasy支持三種推送方式: Java后台推送(它們有提供JAVA SDK和 maven遠程倉庫), JS推送,RestAPI推送(有了RestAPI,我們就可以用PHP, .NET, Ruby…來推送信息了,很方便)

 

說了這么多,來我們看一下怎么用GoEasy的三種方式分別實現推送吧。

4.1. 用GoEasy SDK推送

1. Java SDK的獲取方式,方式一,直接在goeasy的官網上進行下載;方式二,用maven遠程庫直接導入到項目中。盡管官網上已經做了相同的說明了,我這里還是把關鍵點帖出來,方便大家查看。

GoEasy SDK下載鏈接:http://maven.goeasy.io/service/local/artifact/maven/redirect?r=releases&g=io.goeasy&a=goeasy-sdk&v=0.3.3&e=jar

   GoEasy遠程maven庫的配置:

 1           <repository>
 2               <id>goeasy</id>
 3               <name>goeasy</name>
 4               <url>http://maven.goeasy.io/content/repositories/releases/</url>
 5          </repository>
 6  7           <dependency>
 8                <groupId>io.goeasy</groupId>
 9                <artifactId>goeasy-sdk</artifactId>
10                <version>0.3.3</version>
11          </dependency>

 

      需要注意的是: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
 2. 實例化GoEasy對象
1 GoEasy goEasy = new GoEasy("your appkey");

 

c. 推送消息
1 goEasy.publish('your_channel', 'First message');

 

4.2. JS推送

a.       引入goeasy.js
1 <script type="text/javascript" src="https://cdn.goeasy.io/goeasy.js"></script>

 

b.       實例化Goeasy對象,並用publish函數進行推送
1 <script type="text/javascript">
2        var goEasy = new GoEasy({appkey: 'your appkey'});
3                goEasy. publish ({
4                     channel: 'your_channel', 
5                     message: 'Second message!'
6        });
7  </script>

 

4.3. 用RestAPI進行推送
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官網:http://goeasy.io
快速入門:http://goeasy.io/www/started
文檔下載:http://goeasy.io/www/documents


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM