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

 

1、背景javascript

  以前項目須要作一個推送功能,最開始我用websocket實現個人功能。使用websocket的好處是免費自主開發,可是有幾個問題:1)瀏覽器的兼容問題,尤爲是低版本的ie2)由於是推送,至關於從服務器到瀏覽器維護了一個通道,會佔據你的服務器性能3)上手週期比較長,即便上手,代碼的穩定性也不高,維護也麻煩。由於這樣,因此項目中有關推送的代碼我都無論輕易改動。前端

  後來又有個web項目也須要推送,鑑於以上緣由,我使用第三方的推送服務,緣由很簡單,第三方推送服務能夠知足咱們的需求,縮短咱們的開發測試維護成本,術業有專攻,它們在推送方面更有優點,服務質量也有保證!通過對比後,咱們最終決定使用了GoEasy推送。java

  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瞭解。node

 

2、原理web

  只須要肯定哪些用戶須要接收信息,而後讓這些用戶都訂閱一個相同的channel(頻道)。而後再往這個頻道上推送消息便可!全部關鍵在於channelchannel一致,則能夠接收到信息,不然收不到!瀏覽器

  對於訂閱必需要的信息有:appkey, channel安全

  對於推送必需要的信息有:appkey, channel, content服務器

 

3、步驟websocket

一、註冊帳號併發

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

二、建立應用

應用分免費的和收費(免費版最多隻能建立2個應用)我這裏用的是免費版。建立完應用以後以下圖。

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

三、前端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>        

 

五、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做爲頻道名便可。

 

4、其餘

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}

相關文章
相關標籤/搜索