博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SSM项目使用GoEasy 实现web消息推送服务
阅读量:6999 次
发布时间:2019-06-27

本文共 2345 字,大约阅读时间需要 7 分钟。

 

一、背景

  之前项目需要做一个推送功能,最开始我用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)不但支持从服务端到客户端的推送,还支持从客户端到客户端的推送。更多资料可以去官网了解。

 

二、原理

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

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

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

 

三、步骤

1、注册账号

官网地址:

2、创建应用

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

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

3、前端js代码

1   2  

 

注意:

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 
2
3
goeasy
4
goeasy
5
http://maven.goeasy.io/content/repositories/releases/ 6
7
8
9 10
11
12 13
14
io.goeasy
15
goeasy-sdk
16
0.3.8
17
18 19

 

5、java代码

1 GoEasy goEasy = new GoEasy( "http(s)://
”, "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

例如:_message}

 

 

 

转载于:https://www.cnblogs.com/DDgougou/p/9008520.html

你可能感兴趣的文章
easyui实现datagrid列标题拖动
查看>>
CentOS 6.5系统安装配置LAMP(Apache+PHP5+MySQL)服务器环境
查看>>
在Websphere上修改项目的web.xml中的配置后不起作用
查看>>
JAVA 数据计算、取整、+1、四舍五入
查看>>
wshell修改了upload功能,増加显示图片功能
查看>>
ERP中标准成本的差异分析控制
查看>>
linux 中断的上半部和下半部
查看>>
单例模式的七种写法
查看>>
好用到吐血!APP设计利器Sketch
查看>>
Android TensorFlow环境搭建
查看>>
【细品架构1/100】架构之缘起
查看>>
在js中获取后台传出的json数据
查看>>
Drools的JSR94实现形式
查看>>
oracle的nvl和nvl2
查看>>
hdfs 写orc
查看>>
1.9 xz压缩和解压缩
查看>>
IDEA如何自动提示并补全syso和main呢?
查看>>
9.数组和向量
查看>>
JXL读写Excel
查看>>
mysql自定义排序
查看>>