前段时间客户有个需求他希望他在后台管理页面发布一个消息,所有用这个系统的用户无论在哪个页面都能及时收到他发布的信息,以前对于类似需求在少量 页面接收的前提下,我一般采用ajax定时去服务器pull信息下来,如果有就显示出来,但是这种方式非常消耗客户端的资源,后来我在网上查询到了一个第 三方的免费推送服务-GoEasy push, 它可以满足我的需求,下面是如何用GoEasy进行信息推送及接收:

JAVA Web实时消息后台服务器推送技术

1. 首先我需要在GoEasy官网上注册一个账号,注册完毕后,我可以自己添加application,application添加完成后,GoEasy会自动帮我生成两个key,一个是Super key, 另一个是Subscribe key。

GoEasy官网:https://goeasy.io

Super key:用于推送或接收

Subscribe key:仅用于接收,不能用来推送信息

这两个key相当于使用GoEasy服务的密码。

2. 在java后台用super key推送客户发布的消息

2.1. 在开始写代码之前,我们需要从GoEasy官网上下载一个jar包并引入到项目中。

2.2. 这里不方便展示我们项目的源码,我将用一个JUnit方法来代替:

   public void testPublishMessageInGoEasy(){
   GoEasy goEasy = new GoEasy("your super key");
   goEasy.publish("your_channel","your message");
   }

    注意:这里只能用你的super key, “your_channel”--你可以随意命名(最好是有意义的名字),channel非常重要,它决定到底哪些页面需要接收你发的消息。

3. 在jsp页面里接收推送消息,由于客户要求每个用户在任意页面都需要能接收到该消息,我把接收信息的部分的代码放在了main.jsp,所有的页面都引入了这个jsp页面。下面是在main.jsp接收信息的代码:

3.1. 引入goeasy.js

<script type="text/javascript" src="https://cdn.goeasy.io/goeasy.js"></script>

3.2. 初始化GoEasy对象并订阅channel (订阅的channel必须与推送消息时的channel一致!)

var goeasy = new GoEasy({
                              appkey: 'your super key or your subscribe key',

});

goeasy.subscribe({
                            channel: 'your_channel',
          onMessage: function (result) {
          alert("You hava a new message: " + result.content);
             }
   });

代码部分就完成了, 你可以先打开一些页面,然后在运行JUnit 测试方法,可以看到所有打开的页面都收到从Junit test里推送出来的消息。

GoEasy对推送,连接,订阅方法提供了一些回调函数,用于满足我们不同的需求,更多的请参照他们的文档(有中英文版本的哈) https://goeasy.io/www/docs.jsp

也希望这篇文章对其他需要做推送的朋友有帮助!

用GoEasy推送实现Java实时推送的更多相关文章

  1. GoEasy实现web实时推送过程中的自动补发功能

    熟悉GoEasy推送的朋友都知道GoEasy推送实现web实时推送并且能够非常准确稳定地将信息推送到客户端.在后台功能中查看接收信息详情时,可有谁注意到有时候在发送记录里有一个红色的R标志?R又代表的 ...

  2. php 实时推送代码

    网站质量不错的网站可以在百度站长平台/数据提交/sitemap栏目下看到实时推送的功能, 目前这个工具是邀请开放, 百度的实时推送的api接口可以实时推送我们新发布的文章, 保证百度在第一时间收录. ...

  3. JAVA使用百度链接实时推送API提交链接

    官网地址:http://data.zz.baidu.com/ 百度推广API的token获取 http://data.zz.baidu.com/site/index 填写完之后会进行验证, 验证完之后 ...

  4. HTML5 WebSocket 实时推送信息测试demo

    测试一下HTML5的websocket功能,实现了客户端→服务器实时推送信息到客户端,包括推送图片: websocket实现MessageInbound类 onTextMessage()/onBina ...

  5. WebSocket和kafka实现数据实时推送到前端

    一. 需求背景      最近新接触一个需求,需要将kafka中的数据实时推送到前端展示.最开始想到的是前端轮询接口数据,但是无法保证轮询的频率和消费的频率完全一致,或造成数据缺失等问题.最终确定用利 ...

  6. dwr3+spring实现消息实时推送

    最近项目要实现一个消息推送的功能,主要就是发送站内信或者系统主动推送消息给当前在线的用户.每次的消息内容保存数据库,方便用户下次登录后也能看到.如果当前用户在线,收到站内信就主动弹出提示.一开始想到的 ...

  7. GoEasyWeb实时推送

    GoEasyWeb实时推送,轻松实现实时消息推送. Web页面订阅(约5行代码),服务器端推送(2行代码)就可以轻松实现,而且在高并发时消息推送稳定. 自己完全可以只花五分钟写出属于自己的第一个实时推 ...

  8. springboot搭建一个简单的websocket的实时推送应用

    说一下实用springboot搭建一个简单的websocket 的实时推送应用 websocket是什么 WebSocket是一种在单个TCP连接上进行全双工通信的协议 我们以前用的http协议只能单 ...

  9. 服务器端实时推送技术之SseEmitter的用法

    这是SpringMVC提供的一种技术,可以实现服务端向客户端实时推送数据.用法非常简单,只需要在Controller提供一个接口,创建并返回SseEmitter对象,发送数据可以在另一个接口调用其se ...

随机推荐

  1. css3动画学习的例子来源

    1.这里面有不同的鼠标经过图片效果,图片变大变小,出现文字,向左移动等等 http://dinolatoga.com/demo/webkit-image-hover-effects/ 2.有一篇博客, ...

  2. dojo.hasClass/dojo.addClass/dojo.removeClass/dojo.toggleClass/dojo.repalceClass

    dojo.hasClass(/*DomNode*/node or DomIdstring,/*String*/classString)//如果节点中有特定的类,那么返回ture,否则返回false d ...

  3. Reverse Integer (JAVA)

    public class Solution { public int reverse(int x) { StringBuffer sb = new StringBuffer(x+"" ...

  4. ios 添加多个target 管理 多个版本文件

    1. 添加一个Target 这里是添加一个Test 项目 这里添加新的target Test与Release 也是同上的操作

  5. hbase性能调优之压缩测试

    文章概述: 1.顺序写 2.顺序读 3.随机写 4.随机读 5.SCAN数据 0 性能测试工具 hbase org.apache.hadoop.hbase.PerformanceEvaluation ...

  6. jeasyui制作计划-ajax学习

    Ajax:可以无刷新状态更新页面,并且实现异步提交,提升了用户的体验. 1.load()函数的使用,可以三个参数:url(必须的参数,请求html文件的url地址,参数类型string).date(可 ...

  7. Android 创建自定义布局

    我们所有的控件都是继承至View类的,而所有的布局都是继承至ViewGroup的,所以我们也可以继承某个view类来实现我们自己的布局或者控件. 引入布局 我们新建一个title.xml的layout ...

  8. URL 操作

    1.$.param()将对象键值对转换为 URL 字符串键值对 var obj = { name : 'Lee', age : 100 }; alert($.param(obj));

  9. SSO单点登录(转载)

    昨天和几位朋友探讨到了这个话题,发现虽然单点登录,或者叫做独立的passport登录虽然已经有了很多实现方法,但是能真正了解并实现的人却并不太多,所以些下此文,希望从原理到实现,能让大家了解的多一些 ...

  10. 通过Wmi实现Hyper-V远程管理(一)

    最近公司需要做Hyper-V的远程管理,在现有产品基础上扩展对Hyper V的管理,实现远程开关机.远程开启虚拟机会话,其他内容可查看MSDN中有对Hyper-V的描述和相关实例代码. Wmi操作hy ...