1. 程式人生 > >使用GoEasy實現web實時推送

使用GoEasy實現web實時推送

之前專案需要做一個推送功能,最開始我沒有想過用第三方推送服務。想著可以用已知技術方式完成,例如定時到伺服器看看是否有新的訊息,有的話,就讀取下來並顯示,但是這種方式很浪費客戶以及伺服器的資源,當然這種方式在我們專案裡是不可取的。再後來我在網上搜了一些,說是可以用web socket實現我的功能,但是我在網上查了一下使用方式,看了一上午一頭霧水。即使我可以一週兩週內用websocket實現我的推送,那我又拿什麼來保證我自己寫的推送程式的到達率和速度呢?維護成本一定也會隨著增加!況且我們也不允許花太多開發成本在這個專案上!

經過上面的一番周折後,我跟專案組提出使用第三方的推送服務,原因很簡單,第三方推送服務可以滿足我們的需求,縮短我們的開發測試維護成本,術業有專攻,它們在推送方面更有優勢,服務質量也有保證!經過幾番對比後,我們最終決定使用了GoEasy推送。 它真正的從根本上解決了我們的問題!對於他們的服務質量很滿意,註冊成功後,你可以獲得他們的聯絡方式,問題處理得很及時,不像有些公司的客服,發封郵件好幾天都沒有任何資訊!從而也解決了我們的後顧之憂!

廢話不多說,直接進入正題,如何實現:

1. 從GoEasy獲取appkey

appkey是驗證使用者的有效性的唯一標識。

  • 用註冊好的賬號登入到GoEasy的後臺管理系統,建立您自己應用(application).
  • Application建立好之後系統會自動為您生成appkey

系統會生成兩個keys,一個Super key和一個Subscribe key;它們的區別在於前者既可以訂閱又可以推送,但後者只能用於訂閱。

2. GoEasy實現向特定使用者群推送的原理

知道了他們的推送原理,可以更加方便我們瞭解他們的服務,以及理解我們寫的程式碼。其實原理很簡單,只需要確定哪些使用者需要接收資訊,然後讓這些使用者都訂閱一個相同的channel(頻道)。 然後再往這個平臺上推送訊息即可!所有關鍵在於channel,channel一致,則可以接收到資訊,否則收不到!

對於訂閱必須要的資訊有:Appkey, channel

對於推送必須要的資訊有:Appkey, channel, content

3. 用GoEasy實現訂閱(接收)的例項

複製程式碼
 1  <script type="text/javascript" src="https://cdn.goeasy.io/goeasy.js"></script>
 2 
 3                     <script type="text/javascript">
 4             var goEasy = new GoEasy({appkey: 'your appkey'});
5 goEasy.subscribe({ 6 channel: 'your_channel', 7 onMessage: function(message){ 8 alert('接收到訊息:'+message.content);//拿到了資訊之後,你可以做你任何想做的事 9 } 10 }); 11 </script>     
複製程式碼

   有了這幾行程式碼後,只要保證網路暢通的情況下,頁面會自動彈出你從任何平臺上推送的資訊。

4. 用GoEasy實現推送及接收的例項

目前GoEasy支援三種推送方式: Java後臺推送(它們有提供JAVA SDK和 maven遠端倉庫), JS推送,RestAPI推送(有了RestAPI,我們就可以用PHP, .NET, Ruby…來推送資訊了,很方便)

說了這麼多,來我們看一下怎麼用GoEasy的三種方式分別實現推送吧。

4.1. 用GoEasy SDK推送

1. Java SDK的獲取方式,方式一,直接在goeasy的官網上進行下載;方式二,用maven遠端庫直接匯入到專案中。儘管官網上已經做了相同的說明了,我這裡還是把關鍵點帖出來,方便大家檢視。

   GoEasy遠端maven庫的配置:

複製程式碼
 1           <repository>
 2               <id>goeasy</id>
 3               <name>goeasy</name>
 4               <url>http://maven.goeasy.io/content/repositories/releases/</url>
 5          </repository>
 6  7           <dependency>
 8                <groupId>io.goeasy</groupId>
 9                <artifactId>goeasy-sdk</artifactId>
10                <version>0.3.3</version>
11          </dependency>
複製程式碼
      需要注意的是:GoEasy需要依賴兩個額外的jar 包:
      gson.jar : http://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.3.1/gson-2.3.1.jar
      slf4j-api.jar : http://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar
 2. 例項化GoEasy物件
1 GoEasy goEasy = new GoEasy("your appkey");
c. 推送訊息
1 goEasy.publish('your_channel', 'First message');

4.2. JS推送

a.       引入goeasy.js
1 <script type="text/javascript" src="https://cdn.goeasy.io/goeasy.js"></script>
b.       例項化Goeasy物件,並用publish函式進行推送
複製程式碼
1 <script type="text/javascript">
2        var goEasy = new GoEasy({appkey: 'your appkey'});
3                goEasy. publish ({
4                     channel: 'your_channel', 
5                     message: 'Second message!'
6        });
7  </script>
複製程式碼
4.3. 用RestAPI進行推送
URL: https://goeasy.io/goeasy/publish
Method: Post
引數:appkey, channel, content

相關推薦

使用GoEasy實現web實時

之前專案需要做一個推送功能,最開始我沒有想過用第三方推送服務。想著可以用已知技術方式完成,例如定時到伺服器看看是否有新的訊息,有的話,就讀取下來並顯示,但是這種方式很浪費客戶以及伺服器的資源,當然這種方式在我們專案裡是不可取的。再後來我在網上搜了一些,說是可以用web socket實現我的功能,但是我在網上

Java 消息------GoEasy實現服務端web

subscribe rip world 查詢 start easy 需要 註冊 註意 項目中需要消息推送,又想較低開發成本,具體需求:角色用戶在後臺管理頁面發布一個消息,所有用這個系統的用戶無論在哪個頁面都能及時收到他發布的消息,後來我在網上查詢到了一個第三方的免費推送服務

WebSocket和kafka實現資料實時到前端

一. 需求背景 最近新接觸一個需求,需要將kafka中的資料實時推送到前端展示。最開始想到的是前端輪詢介面資料,但是無法保證輪詢的頻率和消費的頻率完全一致,或造成資料缺失等問題。最終確定用利用WebSocket實現資料的實時推送。 二. websocket簡介 網上已經有好

Android 基於Socket的長連線實現一個實時的功能

實現此功能需要考慮的幾點: 1)如何保證Socket長連線一直存在並有效執行 2)通過Service執行Socket,當服務端有資料時,通過廣播或者handler來更新UI 具體效果,來上程式碼: @Override public void run() { try

RabbitMQ訂閱釋出的訊息,通過WebSocket實現資料實時到前端上顯

一、架構簡單概述  RabbitMQ訊息佇列服務善於解決多系統、異構系統間的資料交換(訊息通知/通訊)問題,並且可以訂閱和釋出,而隨著HTML5誕生的WebSocket協議實現了瀏覽器與伺服器的全雙工通訊,擴充套件了瀏覽器與服務端的通訊功能,使服務端也能主動向客戶端傳送資料

利用 socket.io 實現訊息實時

專案背景介紹 最近在寫的專案中存在著社交模組,需要實現這樣的一個功能:當發生了使用者被點贊、評論、關注等操作時,需要由伺服器向用戶實時地推送一條訊息。最終完成的專案地址為:https://github.com/noiron/socket-message-push,這裡將介紹一下實現的思路及部分程式碼。

GoEasyweb及接收

最近使用GoEasy在web端進行實時資訊推送,程式碼極其簡單,記錄一下,供大家參考: 一提到實時推送,那麼大家會想到兩點,一是輪詢,二是http長連線。GoEasy是基於http長連線封裝的免費推送服務,我們不需要考慮後臺是如何實現的,而且上手相當快,一個demo幾分鐘就

用node.js(socket.io)實現資料實時

1.setInterval每隔n秒去非同步拉取資料(缺點:更新不夠實時) 2. AJAX輪詢方式方式推送資料(缺點:服務端需要在死迴圈中反覆查詢資料庫) 3.websocket推送資料(缺點:僅支援html5標準的瀏覽器) socket.io的簡要介紹 所有客戶端都通過socket.io掛

Asp.net SignalR 實現服務端訊息實時到所有Web

ASP .NET SignalR是一個ASP .NET 下的類庫,可以在ASP .NET 的Web專案中實現實時通訊。實際上 Asp.net SignalR 2 實現 服務端訊息推送到Web端, 更加簡單

SignalR SelfHost實時訊息,整合到web中,實現伺服器訊息

先前用過兩次SignalR,但是中途有段時間沒弄了,今天重新弄,發現已經忘得差不多了,做個筆記! 首先建立一個控制檯專案Nuget新增引用聯機搜尋:Microsoft.AspNet.SignalR.SelfHostMicrosoft.Owin.Cors 在Program.cs新增程式碼新增一個

實時--GoEasy實現

1、作為一名程式設計師,還是喜歡先從實現來說起!話不多說,直接上code 首先要去GoEasy官網註冊一個賬號,可以免費使用一年的時間。可以獲取Subscribe key (只能接收訊息) Common key(既可以傳送也可以接收訊息) 2、這裡使用JAVA作為伺服

web實時技術--websocket

Python的tornado框架中,websocket允許瀏覽器和伺服器之間進行雙向,實時,持久的,全雙工通訊。協議本身使用 ws://URL的格式,如果是加密的websocket則使用的是wss://URL websocket和其他方式的比較: 1、http協

WebSocket實現實時資料到前端

@Component @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer{ @Resource goodsWebSocketHandler handler;

Web Socket 多個使用者之間實現時時訊息

1個月不寫部落格了,最近挺忙的,剛用了2天寫了個預約的小程式和大家分享下~首先大家看下介面:1.祕書端 - 專門新增預約的內容,新增以後立馬在 “市長端” 彈出有一個新的預約2.市長端 - 專門看最新的預約 ,看看要不要接待,接待或不接待點選按鈕以後以後立馬 回覆祕書其實挺簡

spring boot 整合websocket實現實時

websocket暫時能想到的應用是瀏覽器聊天和後臺日誌實時顯示到前臺。 當後臺啟動程式後,等待前臺連線,連線上之後,前後臺就可以相互發送資料了。 先貼上pom配置: <dependency> <groupId&g

STM32F4+WIFI模組TCP連結伺服器,伺服器與安卓客戶端Websocket長連結;實現監控資訊實時

  哈哈哈哈哈!這是筆者第一次寫這種東西,專案是我們大二的一個大創組的專案:(雖然很沒創新,導師也一棒子打死了)但是我們還是硬著頭皮完成了。 1>硬體端:stm32f429,紅外線感應,esp8266模組,ov5640攝像頭,步進電機,等等。    主要是採集移動物

java web 伺服器技術 comet實現(原理)

最近對伺服器推送技術比較感興趣,在網上也看了好些文章,由於每個人理解的不同,實現細節或者語言表達方式不同,本人被各種名詞或者技術實現搞的頭大,於是自己準備整理下。 首先實現伺服器推送技術一直一來是B/S應用開發的一塊難題,因為是基於HTTP協議的,HTTP協議為無狀態,單

websockt實現從後臺到前臺實時訊息的需要的架構

1.在後臺需要的是springBoot框架2.socketjs:    1. 是一個瀏覽器JavaScript庫,提供了一個類似WebSocket的物件    2. 提供一個連貫的跨瀏覽器的JavaScriptAPI,在瀏覽器和Web伺服器之間建立了一個低延遲,全雙工,跨域的

C#實現伺服器資料實時的功能的原理

   有的時候我們需要實現伺服器的資料實時的向客戶端進行自動推送,這樣可以不適用輪詢的方式來查詢,首先講一下實現推送資料的原理,利用agsxmpp技術,首先是伺服器端開啟相應的持續監測埠例如:5222

實時道路上少走彎路---GoEasy

之前專案需要做一個推送功能,最開始我沒有想過用第三方推送服務。想著可以用已知技術方式完成,例如定時到伺服器看看是否有新的訊息,有的話,就讀取下來並顯示,但是這種方式很浪費客戶以及伺服器的資源,當然這種方式在我們專案裡是不可取的。再後來我在網上搜了一些,說是可以用web so