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

 

一、背景

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

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

  GoEasy是一款强大易用的websocket消息推送服务,web,移动端都可以进行推送这是个收费的产品,当然提供12个月免费试用期,针对不同的并发数量和消息发送条数都有价格明细。它有如下几个优点。1)完美支持99.9%的浏览器,即使非常古老的IE6IE7IE82)任何开发语言PHP C# Java Ruby Python C(++) node.js ... 3)它在全球有56个数据中心,保证推送的实时可达性,实时高效;4)独创的OTP技术+Https提高消息安全隐私;5)稳定可靠,简单易用。6)不但支持从服务端到客户端的推送,还支持从客户端到客户端的推送。更多资料可以去官网http://goeasy.io了解。

 

二、原理

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

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

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

 

三、步骤

1、注册账号

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

2、创建应用

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

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

3、前端js代码

 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          onConnected: function () {
 6             console.log("成功连接GoEasy!");
 7          },
 8          onDisconnected: function () {
 9             console.log("与GoEasy连接断开!");
10          },
11          onConnectFailed: function (error) {
12             console.log("与GoEasy连接失败,错误编码:" + error.code + "错误信息: " + error.content);
13          }
14      });
15      goEasy.subscribe({
16          channel:"myChannel",
17          onMessage:function(message){
18              alert(message.content);
19          }
20      });
21  </script>

 

注意:

1)请不要将goeasy.js下载到本地,GoEasy动态为不同浏览器和操作系统提供不同goeasy.js,使用下载到本地的goeasy.js,将会导致某些用户不能发送和接收消息。

2)第一行代码的http(s)表示可以用http协议,也可以使用https协议,一般情况下使用http就可以了,http速度快,性能更高。

2)上面代码中<CDN Host>需要用您应用的CDN Host,如图1,比如你的CDN Hostcdn-hangzhou.goeasy.io

那么上面第一行代码为:<script type="text/javascript" src="http://cdn-hangzhou.goeasy.io/goeasy.js"></script>

 

4pom.xml文件中加入GoEasy专有maven

 1 <repositories>
 2     <repository>
 3         <id>goeasy</id>
 4         <name>goeasy</name>
 5         <url>http://maven.goeasy.io/content/repositories/releases/
 6     </url>
 7     </repository>
 8 </repositories>
 9 
10 <!--添加依赖-->
11 <dependencies>
12 
13     <dependency>
14         <groupId>io.goeasy</groupId>
15         <artifactId>goeasy-sdk</artifactId>
16         <version>0.3.8</version>
17     <dependency>
18 
19 <dependencies>        

 

5、java代码

1 GoEasy goEasy = new GoEasy( "http(s)://<REST Host>”, "my_appkey");
2 goEasy.publish("频道","消息内容");
3 
4 //比如我使用http协议,我的应用的REST Host为rest-hangzhou.goeasy.io,那么上面代码就是这样的
5 
6 GoEasy goEasy = new GoEasy("http://rest-hangzhou.goeasy.io", "AF-aaaaaa0dddddd5cccccc2d113f444444");
7 goEasy.publish("myChannel","测试");

如果想实现精准推送,给不同的用户推送不同的消息,在页面获取当前登录人id,在后台发布频道时就把id作为频道名即可。

 

四、其他

RestAPI进行推送

URL: https://goeasy.io/goeasy/publish

Method: Post

参数:appkey, channel, content

例如:https://goeasy.io/goeasy/publish?appkey={your_appkey}&channel={your_channel}&content={your_message}

 

 

 

posted @ 2018-05-08 15:34  Erneste  阅读(3128)  评论(0编辑  收藏  举报