使用GoEasy 实现web消息推送服务

实现web消息实时推送的方式有多种:

1. goEasy实现(有数量限制,而且必须在线,因为要解析浏览器去cdn加载goeasy.js)
2. ajax实现轮询的方式(就是使用js中设置定时任务ajax访问)
3. html5的webscoket实现web消息实时推送

1.背景

之前项目需要做一个推送功能,最开始我用websocket实现我的功能。使用websocket的好处是免费自主开发,但是有几个问题:1)浏览器的兼容问题,尤其是低版本的ie;2)因为是推送,相当于从服务器到浏览器维护了一个通道,会占据你的服务器性能;3)上手周期比较长,即使上手,代码的稳定性也不高,维护也麻烦。因为这样,所以项目中有关推送的代码我都不管轻易改动。

后来又有个web项目也需要推送,鉴于以上原因,我使用第三方的推送服务,原因很简单,第三方推送服务可以满足我们的需求,缩短我们的开发测试维护成本,术业有专攻,它们在推送方面更有优势,服务质量也有保证!经过对比后,我们最终决定使用了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了解。

2.原理

只需要确定哪些用户需要接收信息,然后让这些用户都订阅一个相同的channel(频道)。然后再往这个频道上推送消息即可!所有关键在于channel,channel一致,则可以接收到信息,否则收不到!

对于订阅必须要的信息有:appkey, channel

对于推送必须要的信息有:appkey, channel, content

3.步骤

1.注册账号

            官网地址:http://goeasy.io

    2.创建应用

            应用分免费版的和收费版(免费版最多只能创建2个应用),我这里用的是免费版。创建完应用之后如下图。

其中。appkey是验证用户的有效性的唯一标识。系统会生成两个keys,一个Super key和一个Subscribe key;它们的区别在于前者既可以订阅又可以推送,但后者只能用于订阅。

废话少说 贴代码!

1.首先pom.xml文件中加入GoEasy专有maven库

 


    
        goeasy
        goeasy
        http://maven.goeasy.io/content/repositories/releases/
    



    
        io.goeasy
        goeasy-sdk
        0.3.3
    

 

 

2.java代码片段

 

package com.irs.util;

import io.goeasy.GoEasy;
import io.goeasy.publish.GoEasyError;
import io.goeasy.publish.PublishListener;

public class easyio {
	public void testio() {
		GoEasy goEasy = new GoEasy( "http(s)://”, "my_appkey");
	    goEasy.publish("my_channel", "二宝君是最帅!",new PublishListener(){
	        @Override
	        public void onSuccess() {
	            System.out.print("消息发布成功 ");
	        }
	        @Override
	        public void onFailed(GoEasyError error) {
	            System.out.print("消息发布失败 ,  错误编码:" + error.getCode());
	        }
	    });
	}
}

3.js代码片段

 

 

//记得引入
var goEasy = new GoEasy({
            appkey: 'my_appkey'
        });

        goEasy.subscribe({
            channel:'my_channel',
            onMessage: function(message){
                alert('收到:'+message.content);
            }
        });

4.然后使用Junit测试类进行测试,就能看到单向通信的效果了

 

 

import org.junit.Test;

public class uTest {
	private easyio os=new easyio();
	@Test
	public void Test01() {
		os.testio();
	}
}

5.效果图

 

最后附上goEasy 中文PDF: 点我下载

 

 

你可能感兴趣的:(使用GoEasy 实现web消息推送服务)