SSM項目使用GoEasy 實現web消息推送服務


 

一、背景

  之前項目需要做一個推送功能,最開始我用websocket實現我的功能。使用websocket的好處是免費自主開發,但是有幾個問題:1)瀏覽器的兼容問題,尤其是低版本的ie2)因為是推送,相當於從服務器到瀏覽器維護了一個通道,會占據你的服務器性能3)上手周期比較長,即使上手,代碼的穩定性也不高,維護也麻煩。因為這樣,所以項目中有關推送的代碼我都不管輕易改動。

  后來又有個web項目也需要推送,鑒於以上原因,我使用第三方的推送服務,原因很簡單,第三方推送服務可以滿足我們的需求,縮短我們的開發測試維護成本,術業有專攻,它們在推送方面更有優勢,服務質量也有保證!經過對比后,我們最終決定使用了GoEasy推送。

  GoEasy是一款強大易用的websocket消息推送服務,web,移動端都可以進行推送這是個收費的產品,當然提供12個月免費試用期,針對不同的並發數量和消息發送條數都有價格明細。它有如下幾個優點。1)完美支持99.9%的瀏覽器,即使非常古老的IE6IE7IE82)任何開發語言PHP C# Java Ruby Python C(++) node.js ... 3)它在全球有56個數據中心,保證推送的實時可達性,實時高效;4)獨創的OTP技術+Https提高消息安全隱私;5)穩定可靠,簡單易用。6)不但支持從服務端到客戶端的推送,還支持從客戶端到客戶端的推送。更多資料可以去官網http://goeasy.io了解。

 

二、原理

  只需要確定哪些用戶需要接收信息,然后讓這些用戶都訂閱一個相同的channel(頻道)。然后再往這個頻道上推送消息即可!所有關鍵在於channelchannel一致,則可以接收到信息,否則收不到!

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

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

 

三、步驟

1、注冊賬號

官網地址:http://goeasy.io

2、創建應用

應用分免費的和收費(免費版最多只能創建2個應用)我這里用的是免費版。創建完應用之后如下圖。

其中。appkey是驗證用戶的有效性的唯一標識。系統會生成兩個keys,一個Super key和一個Subscribe key;它們的區別在於前者既可以訂閱又可以推送,但后者只能用於訂閱。

3、前端js代碼

 1  <script type="text/javascript" src="http(s)://<CDN Host>/goeasy.js"></script>
 2  <script type="text/javascript">
 3      var goEasy = new GoEasy({  4          appkey: "您的app key",  5          onConnected: function () {  6             console.log("成功連接GoEasy!");  7  },  8          onDisconnected: function () {  9             console.log("與GoEasy連接斷開!"); 10  }, 11          onConnectFailed: function (error) { 12             console.log("與GoEasy連接失敗,錯誤編碼:" + error.code + "錯誤信息: " + error.content); 13  } 14  }); 15  goEasy.subscribe({ 16          channel:"myChannel", 17          onMessage:function(message){ 18  alert(message.content); 19  } 20  }); 21  </script>

 

注意:

1)請不要將goeasy.js下載到本地,GoEasy動態為不同瀏覽器和操作系統提供不同goeasy.js,使用下載到本地的goeasy.js,將會導致某些用戶不能發送和接收消息。

2)第一行代碼的http(s)表示可以用http協議,也可以使用https協議,一般情況下使用http就可以了,http速度快,性能更高。

2)上面代碼中<CDN Host>需要用您應用的CDN Host,如圖1,比如你的CDN Hostcdn-hangzhou.goeasy.io

那么上面第一行代碼為:<script type="text/javascript" src="http://cdn-hangzhou.goeasy.io/goeasy.js"></script>

 

4pom.xml文件中加入GoEasy專有maven

 1 <repositories>
 2     <repository>
 3         <id>goeasy</id>
 4         <name>goeasy</name>
 5         <url>http://maven.goeasy.io/content/repositories/releases/  6     </url>
 7     </repository>
 8 </repositories>
 9 
10 <!--添加依賴-->
11 <dependencies>
12 
13     <dependency>
14         <groupId>io.goeasy</groupId>
15         <artifactId>goeasy-sdk</artifactId>
16         <version>0.3.8</version>
17     <dependency>
18 
19 <dependencies>        

 

5、java代碼

1 GoEasy goEasy = new GoEasy( "http(s)://<REST Host>”, "my_appkey");
2 goEasy.publish("頻道","消息內容"); 3 
4 //比如我使用http協議,我的應用的REST Host為rest-hangzhou.goeasy.io,那么上面代碼就是這樣的
5 
6 GoEasy goEasy = new GoEasy("http://rest-hangzhou.goeasy.io", "AF-aaaaaa0dddddd5cccccc2d113f444444"); 7 goEasy.publish("myChannel","測試");

如果想實現精准推送,給不同的用戶推送不同的消息,在頁面獲取當前登錄人id,在后台發布頻道時就把id作為頻道名即可。

 

四、其他

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}

 

 

 


免責聲明!

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



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