基於GoEasy實現Java web實時資料推送
阿新 • • 發佈:2019-01-23
以前都是使用ajax定時傳送請求到後臺,這種方式非常消耗系統資源。在大併發情況時如果不對執行緒進行控制的話,還會重複取資料,造成資料錯誤。
鑑於這種情況,使用websocket通訊就是一個非常好的選擇。websocket能避免浪費系統資源,但是它有一個缺點就是不相容低版本的IE瀏覽器(貌似是隻支援IE10及以上的IE版本)。為了解決這個問題,我在網上逛了一圈,最終找到了GoEasy推送,網上說它是基於websocket和polling兩種通訊方式而開發的實時推送服務平臺。通過測試得出,低版本的IE瀏覽器都是通過polling方式連線的,而其它瀏覽器都是websocket。GoEasy官網:http://goeasy.io
下面介紹如何使用GoEasy從java後臺推送實時訊息。
1. 從Java後臺推送訊息
初始化GoEasy物件時,需要一個appkey.這個appkey需要大家自己去goeasy官網註冊並建立一個app (大家可以先建立一個免費的app來測試)
到這裡為止後臺程式碼就已經完畢了。
2.2. 訂閱
鑑於這種情況,使用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 程式碼
GoEasy goEasy = new GoEasy("03**********************51"); goEasy.publish("系統通知", "系統將於今天中午十二點進行維護,屆時系統不可用。", new PublishListener() { @Override public void onFailed(GoEasyError error) { System.out.println("推送失敗了,Error code:" + error.getCode() + "; error content:" + error.getContent()); } @Override public void onSuccess() { System.out.println("推送成功"); } });
初始化GoEasy物件時,需要一個appkey.這個appkey需要大家自己去goeasy官網註冊並建立一個app (大家可以先建立一個免費的app來測試)
到這裡為止後臺程式碼就已經完畢了。
2. Web頁面接收
2.1. 引入goeasy.js
<script type="text/javascript" src="http://cdn.goeasy.io/goeasy.js"></script>
2.2. 訂閱
<script type="text/javascript"> var goEasy = new GoEasy({appkey: '03**********************51'}); goEasy.subscribe({ channel: '系統通知', onMessage: function(message){ alert('收到:'+message.content); } }); </script>
3. 最後一步確保在推送前訂閱了的web頁面已經開啟(先訂閱後推送),推送後你的訊息會在訂閱的web頁面彈出來
除了Java後臺推送之外,goeasy同時也提供了Restful API 供其開發語言的使用者輕鬆實現實時web推送,如C#伺服器實時推送,asp.net伺服器實時推送, python伺服器實時推送, PHP伺服器實時推送, Ruby伺服器實時推送.
當然,goeasy也提供從web頁面直接推送訊息的功能:
goEasy.publish({
channel: '系統推送l',
message: '來自web的推送訊息:接收到了您的推送訊息'
});