1. 程式人生 > >web+java+js的GoEasy的訊息推送

web+java+js的GoEasy的訊息推送

原文http://blog.csdn.net/xiqincai9/article/details/52535275以前都是使用ajax定時傳送請求到後臺,這種方式非常消耗系統資源。在大併發情況時如果不對執行緒進行控制的話,還會重複取資料,造成資料錯誤。
   鑑於這種情況,使用websocket通訊就是一個非常好的選擇。websocket能避免浪費系統資源,但是它有一個缺點就是不相容低版本的IE瀏覽器(貌似是隻支援IE10及以上的IE版本)。為了解決這個問題,我在網上逛了一圈,最終找到了GoEasy推送,網上說它是基於websocket和polling兩種通訊方式而開發的實時推送服務平臺。通過測試得出,低版本的IE瀏覽器都是通過polling方式連線的,而其它瀏覽器都是websocket。GoEasy官網:http://goeasy.io

下面介紹如何使用GoEasy從java後臺推送實時訊息。
1. 從Java後臺推送訊息

1.1. 引入goeasy的Java SDK; 大家也可以通過maven將goeasy加入到專案中。SDK的下載和maven配置請大家從goeasy官網上獲取: http://goeasy.io/www/started

快照

1.2. Java 程式碼

  1. GoEasy goEasy = new GoEasy("03**********************51");    
  2. goEasy.publish("系統通知""系統將於今天中午十二點進行維護,屆時系統不可用。"new PublishListener() {    
  3.     @Override
  4.     publicvoid onFailed(GoEasyError error) {    
  5.         System.out.println("推送失敗了,Error code:" + error.getCode() + "; error content:" + error.getContent());    
  6.     }    
  7.     @Override
  8.     publicvoid onSuccess() {    
  9.         System.out.println("推送成功");    
  10.     }    
  11. });    


初始化GoEasy物件時,需要一個appkey.這個appkey需要大家自己去goeasy官網註冊並建立一個app (大家可以先建立一個免費的app來測試)

到這裡為止後臺程式碼就已經完畢了。  

2. Web頁面接收
2.1. 引入goeasy.js

[javascript] view plain copy
  1. <script type="text/javascript" src="http://cdn.goeasy.io/goeasy.js"></script>    

2.2. 訂閱 [javascript] view plain copy
  1. <script type="text/javascript">    
  2.   var goEasy = new GoEasy({appkey: '03**********************51'});    
  3.   goEasy.subscribe({    
  4.     channel: '系統通知',    
  5.     onMessage: function(message){    
  6.       alert('收到:'+message.content);    
  7.     }    
  8.     });    
  9. </script>   

3. 最後一步確保在推送前訂閱了的web頁面已經開啟(先訂閱後推送),推送後你的訊息會在訂閱的web頁面彈出來


除了Java後臺推送之外,goeasy同時也提供了Restful API 供其開發語言的使用者輕鬆實現實時web推送,如C#伺服器實時推送,asp.net伺服器實時推送, python伺服器實時推送, PHP伺服器實時推送, Ruby伺服器實時推送.

當然,goeasy也提供從web頁面直接推送訊息的功能:

[javascript] view plain copy
  1. goEasy.publish({    
  2.      channel: '系統推送l',    
  3.      message: '來自web的推送訊息:接收到了您的推送訊息'
  4. });