GoEasy使用詳解

GoEasy

1.GoEasy介紹

GoEasy專注於服務器與瀏覽器,瀏覽器與瀏覽器之間消息推送,完美兼容世界上的絕大多數瀏覽器,包括IE6, IE7之類的非常古老的瀏覽器。 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瞭解。

官網:https://goeasy.io/www/home , 官網有文檔(有中文文檔)和demo, 下面記錄一下我使用的步驟:

2.使用步驟

2.1.官網註冊賬號

賬號:[email protected] 密碼:aaa

2.2.新建一個免費的application,其中application name就是下面的channel,這時,系統會分配給你appkey

應用分免費版的和收費版(免費版最多隻能創建2個應用),我這裏用的是免費版。創建完應用之後如下圖。

其中。appkey是驗證用戶的有效性的唯一標識。系統會生成兩個keys,一個Super key和一個Subscribe key;它們的區別在於前者既可以訂閱又可以推送,但後者只能用於訂閱。

App keys:

2.3.導入SDK

Javascript:

 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     });
 6     goEasy.subscribe({
 7         channel:"myChannel",
 8         onMessage:function(message){
 9             alert(message.content);
10         }
11     });
12 </script>

注意:

  1. 請不要將goeasy.js下載到本地,GoEasy動態爲不同瀏覽器提供不同內容的goeasy.js,使用下載到本地的goeasy.js,將會導致某些瀏覽器 不能發送和接收消息。
  2. 如果您的應用程序需要支持Windows XP用戶, 請務必使用HTTP來獲取js文件,GoEasy將於2016年9月22日升級所有 SSL證書至SHA-2,屆時起Windows XP用戶將無法通過HTTPS連接GoEasy。

Java

方式一: 手動下載sdk

goeasy-sdk.jar

下載依賴包: gson-2.3.1.jar, slf4j-api-1.7.2.jar

方式二: Maven

添加goeasy倉庫到您的pom.xml文件:

<repositories>
    <repository>
        <id>goeasy</id>
        <name>goeasy</name>
        <url>
            http://maven.goeasy.io/content/repositories/releases/
        </url>
    </repository>
</repositories>

然後添加依賴:

<dependencies>
    <dependency>
        <groupId>io.goeasy</groupId>
        <artifactId>goeasy-sdk</artifactId>
        <version>0.3.8</version>
    </dependency>
</dependencies>

3.服務器發送(發佈)消息

RESTful API

URL:

    http(s)://<REST Host>/publish

Method:

Post

參數:

名稱 必要 描述
appkey 是 您的appkey
channel 是 channel
content 是 您要發送的消息內容

返回值:

    {
        "code" : 200,
        "content" : "OK"
    }
Copy

返回值說明

Code Content 狀態
200 OK 成功
401 Unauthorized app key app key錯誤或者過期
400 <具體錯誤信息> 參數錯誤或不完整
408 Unreachable or timeout 發送數據到GoEasy失敗,可能是因爲網絡原因,不能與GoEasy建立連接
500 Internal Server Error GoEasy服務器錯誤
900 Over max concurrent connections 超過最大連接數
901 No remain messages 消息數量已用完
902 Please encode parameters with utf8 restful請求參數沒有使用utf8進行編碼
999 Your GoEasy application is expired,please contact your administrator to renew it 您的GoEasy application已經過期,請聯繫您們的管理人員對其進行續費

對於服務器端,目前GoEasy僅提供Java 的SDK, 未來會提供更多其他語言的SDK,敬請期待。

4.瀏覽器發送(發佈)消息和接收消息

4.1.發送(發佈)消息

Java

GoEasy goEasy = new GoEasy( "http(s)://<REST Host>", "my_appkey");
goEasy.publish("my_channel","Hello, GoEasy!");

JavaScript

    var goEasy = new GoEasy({
        appkey: "my_appkey"
    });
    //GoEasy-OTP可以對appkey進行有效保護,詳情請參考  
    goEasy.publish({
        channel: "my_channel",
        message: "Hello, GoEasy!"
    });

GoEasy-OTP

4.2.接收(訂閱)消息

JavaScript

    var goEasy = new GoEasy({
        appkey: "my_appkey"
    });
    goEasy.subscribe({
        channel: "my_channel",
        onMessage: function (message) {
            alert("Channel:" + message.channel + " content:" + message.content);
        }
    });

4.3.取消訂閱

JavaScript

    goEasy.unsubscribe ({
        channel: "my_channel"
    });

4.4代碼測試

後臺發送(發佈)消息

//代碼測試
@Test
public void Test(){
    // 參數:服務器地址    ,  AppKey:commonKey
    GoEasy goEasy = new GoEasy( "http://rest-hangzhou.goeasy.io", "BC-78534f92f1204dd595be0e4cbdb8714b"); 

    //參數:管道標識,發送內容
    goEasy.publish("my_channel","Hello, GoEasy!"); 	
}

jsp頁面接收(訂閱)消息

<--代碼測試-->
<script src="http://cdn-hangzhou.goeasy.io/goeasy.js"></script>  
<script type="text/javascript">
    var goEasy = new GoEasy({ appkey: "BC-78534f92f1204dd595be0e4cbdb8714b"});          
    goEasy.subscribe({
    channel: "my_channel",              
    onMessage: function (message) {
    alert("Channel:" + message.channel + " content:" + message.content);
    }
    }); 
</script> 

動態echarts演示

@Test   
public void Test2(){
		
	while(true){
		
		Random random = new Random();
		
		int[] a={random.nextInt(10),random.nextInt(15),random.nextInt(20),random.nextInt(30),random.nextInt(10)};
			
		JSONObject jsonObject = new JSONObject();
		jsonObject.put("data", a);
		String s = jsonObject.toJSONString();
			
		// 參數:服務器地址    ,  AppKey:commonKey
		GoEasy goEasy = new GoEasy( "http://rest-hangzhou.goeasy.io", "BC-78534f92f1204dd595be0e4cbdb8714b"); 
			
		//參數:管道標識,發送內容
		goEasy.publish("my_channel",s); 	
			
		try {
			Thread.sleep(3000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}	
}

<html>
  <head>
    <!-- 引入 echarts.js -->
    <script src="${pageContext.request.contextPath}/js/echarts.min.js"></script>
    <script type="text/javascript" src="../js/jquery.min.js"></script> 
    <script src="http://cdn-hangzhou.goeasy.io/goeasy.js."></script>  
    <script type="text/javascript">
	 
	    $(function(){
	     
	        // 基於準備好的dom,初始化echarts實例
	        var myChart = echarts.init(document.getElementById('main'));
	        
			 var goEasy = new GoEasy({ appkey: "BC-78534f92f1204dd595be0e4cbdb8714b"});          
		 	 goEasy.subscribe({
				channel: "my_channel",              
				onMessage: function (message) {
				
					var data=JSON.parse(message.content);
						//console.log(data);
					
					// 指定圖表的配置項和數據
			        var option = {
			            //標題
			            title: {
			                text: "每月註冊用戶統計圖"
			            },
			            tooltip: {},  //鼠標提示  
			            legend: {     //選項卡
			                data:['柱狀圖','折線圖']
			            },
			            xAxis: {   //橫座標
			                data: ["襯衫","毛衣","鞋子","褲子","襪子"]
			            },
			            yAxis: {},   //縱座標
			            series: [{   //數據系列
			                name: "柱狀圖",   //選項卡名字
			                type: 'bar',  //柱狀圖
			                data: data.data
			            },{   //數據系列
			                name: "折線圖",
			                type: 'line',  //折線圖
			                data: data.data
			            }]
			        };
				        
			        // 使用剛指定的配置項和數據顯示圖表。
	    			myChart.setOption(option);
				}
			 }); 

	    });

   </script>  
  </head>
  
<body>
    <!-- 爲ECharts準備一個具備大小(寬高)的Dom -->
    <div id="main" style="width: 600px;height:400px;"></div>

</body>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章