一、背景

  之前项目需要做一个推送功能,最开始我用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了解。

二、原理

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

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

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

三、步骤

1、注册账号

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

2、创建应用

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

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

3、前端js代码

  <script type="text/javascript" src="http(s)://<CDN Host>/goeasy.js"></script>
<script type="text/javascript">
var goEasy = new GoEasy({
appkey: "您的app key",
onConnected: function () {
console.log("成功连接GoEasy!");
},
onDisconnected: function () {
console.log("与GoEasy连接断开!");
},
onConnectFailed: function (error) {
console.log("与GoEasy连接失败,错误编码:" + error.code + "错误信息: " + error.content);
}
});
goEasy.subscribe({
channel:"myChannel",
onMessage:function(message){
alert(message.content);
}
});
</script>

注意:

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

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

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

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

 

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

 <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>

5、java代码

 GoEasy goEasy = new GoEasy( "http(s)://<REST Host>”, "my_appkey");
goEasy.publish("频道","消息内容"); //比如我使用http协议,我的应用的REST Host为rest-hangzhou.goeasy.io,那么上面代码就是这样的 GoEasy goEasy = new GoEasy("http://rest-hangzhou.goeasy.io", "AF-aaaaaa0dddddd5cccccc2d113f444444");
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}

最新文章

  1. Flash调用麦克风
  2. 如何用Matplotlib绘制三元函数
  3. 剑指offer系列47---翻转单词顺序
  4. windows gui测试工具:AutoIt
  5. 9.7noip模拟试题
  6. Flutter之SliverAppBar
  7. Linux学习---类型修饰符
  8. 为运行Microsoft Dynamics CRM 异步处理服务指定账户没有性能计数器权限
  9. 喜大普奔,SITE4J网站上线啦
  10. MVC+Nhibernate+spring.net(三)
  11. M斐波那契数列(矩阵快速幂+费马小定理)
  12. UVALive 5846 计数
  13. css中选择器
  14. At least one JAR was scanned for TLDs yet contained no TLDs.
  15. 使用ADB管理Andorid系统软件
  16. ubuntu16.04下笔记本自带摄像头编译运行PTAM
  17. Nim 游戏、SG 函数、游戏的和
  18. NOIP2016Day2T3愤怒的小鸟(状压dp) O(2^n*n^2)再优化
  19. Keepalived &amp; Lvs集群搭建实验
  20. Hadoop学习笔记(3) Hadoop文件系统一

热门文章

  1. ROW_NUMBER() OVER()函数用法;(分组,排序),partition by
  2. PHP中利用pcntl实现多进程(模拟多线程)实例(转)
  3. OO第一单元作业总结
  4. npm run dev 启动错误:Module build failed: Error: No PostCSS Config found in:xxxxxxxxxxxxxx
  5. XSS Challenges
  6. pip 使用豆瓣源
  7. ListView展示不同布局需要注意的地方
  8. Vue一个案例引发「内容分发slot」的最全总结
  9. input输入限制,只允许输入数字和“.”,长度不得超过20
  10. PJSUA2开发文档--第六章 媒体 Media类