SSM项目使用GoEasy 实现web消息推送服务
?
一、背景
之前項目需要做一個推送功能,最開始我用websocket實現我的功能。使用websocket的好處是免費自主開發,但是有幾個問題:1)瀏覽器的兼容問題,尤其是低版本的ie;2)因為是推送,相當于從服務器到瀏覽器維護了一個通道,會占據你的服務器性能;3)上手周期比較長,即使上手,代碼的穩定性也不高,維護也麻煩。因為這樣,所以項目中有關推送的代碼我都不管輕易改動。
后來又有個web項目也需要推送,鑒于以上原因,我使用第三方的推送服務,原因很簡單,第三方推送服務可以滿足我們的需求,縮短我們的開發測試維護成本,術業有專攻,它們在推送方面更有優勢,服務質量也有保證!經過對比后,我們最終決定使用了GoEasy推送。
GoEasy是一款強大易用的websocket消息推送服務,web端,移動端都可以進行推送,這是個收費的產品,當然提供12個月免費試用期,針對不同的并發數量和消息發送條數都有價格明細。它有如下幾個優點。1)完美支持99.9%的瀏覽器,即使非常古老的IE6,IE7,IE8;2)任何開發語言PHP 、C# 、Java 、Ruby 、Python 、C(++) 、node.js ... 3)它在全球有5—6個數據中心,保證推送的實時可達性,實時高效;4)獨創的OTP技術+Https提高消息安全隱私;5)穩定可靠,簡單易用。6)不但支持從服務端到客戶端的推送,還支持從客戶端到客戶端的推送。更多資料可以去官網http://goeasy.io了解。
?
二、原理
只需要確定哪些用戶需要接收信息,然后讓這些用戶都訂閱一個相同的channel(頻道)。然后再往這個頻道上推送消息即可!所有關鍵在于channel,channel一致,則可以接收到信息,否則收不到!
對于訂閱必須要的信息有: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 Host為cdn-hangzhou.goeasy.io,
那么上面第一行代碼為:<script type="text/javascript" src="http://cdn-hangzhou.goeasy.io/goeasy.js"></script>
?
4、pom.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}
?
?
?
轉載于:https://www.cnblogs.com/DDgougou/p/9008520.html
總結
以上是生活随笔為你收集整理的SSM项目使用GoEasy 实现web消息推送服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 8/人天,小记一次 JAVA(APP后台
- 下一篇: 我的 Vue.js 学习日记 (七) -