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>