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


Posted in Javascript onNovember 04, 2016

越来越多的项目需要用到实时消息的推送与接收,我这里推荐大家使用GoEasy, 它是一款第三方推送服务平台,使用它的API可以轻松搞定实时推送!

浏览器兼容性:GoEasy推送 支持websocket 和polling两种连接方式,从而可以支持IE6及其以上的所有版本,同时还支持其它浏览器诸如Firefox, Chrome, Safari等等。

支持不同的开发语言:GoEasy推送 提供了Restful API接口,无论你的后台程序用的是哪种语言都可以通过Restful API来实现后台实时推送。如:Java,PHP, C#, Ruby, Python, C, C++, ASP.NET,Node.js...

支持后台及前台推送: 后台用Restful API, 前台用goeasy.js; 运用十分简单!

下面我介绍一下使用GoEasy的步骤:

 1. 你需要到goeasy官网上注册一个账号,并创建一个应用,应用创建好后系统会默认为它生成两个key: publish key和subscribe key

 2. 前台实时订阅及接收

只需要引入goeasy.js,然后调用goeasy的subscribe方法订阅一个channel即可,订阅时无论是用publish key还是subscribe key都可以。通过subscribe的参数 onMessage的回调函数可以实时接收到消息。

 3. 前台实时推送

还是需要引入goeasy.js(如果该页面已经引入了可不在引入),然后调用goeasy的publish方法向已订阅的channel上推送消息即可,推送时只能用publish key。

 4. 后台实时推送

调用GoEasy Restful API, 用post方式访问http://goeasy.io/goeasy/publish, 同时还需要带上三个必要参数:

  • appkey: publish key
  • channel: 你订阅了的channel
  • content: 推送内容

 就是这么简单。

推送的原理:GoEasy的实现原理很简单,就是推送消息的一端只负责推送,而需要接收的页面需要预先订阅。订阅什么呢?订阅channel。往 某个channel上推送消息,客户端就订阅相同的channel,这样就可以确保准确接收。通过channel我们可以自己指定哪些页面或哪些用户可以 接收到从这个channel上推送出来的消息。

下面我将之前写的一个小实例贴出来,里面用了Javascript 在web页面进行订阅,推送,接收,以及取消订阅的例子,里面的appkey用的是goeasy官方的demo 的appkey.

<html>
<head>
<title>GoEasy Test</title>

<script type="text/javascript" src="https://cdn.goeasy.io/goeasy.js"></script>
<script type="text/javascript">
  if(typeof GoEasy !== 'undefined'){
    var goEasy = new GoEasy({
      appkey: 'ba821151-e043-4dfb-a954-c73744c8d323',
      userId:"222",
      username:"22",
      onConnected:function(){
        console.log("Connect to GoEasy success.");
      } ,
      onDisconnected:function(){
        console.log("Disconnect to GoEasy server.");
      } ,
      onConnectFailed:function(error){
        console.log("Connect to GoEasy failed, error code: "+ error.code+" Error message: "+ error.content);
      }
    });
  }
      
  subscribe();
  function subscribe(){
       goEasy.subscribe({
        channel: 'notification',
        onMessage: function(message){
          console.log('Meessage received:'+message.content);
        },
        onSuccess:function(){

          console.log("Subscribe the Channel successfully.");

        },

        onFailed: function(error){

          console.log("Subscribe the Channel failed, error code: "+ error.code + " error message: "+ error.content);

        }

      });

  }
      
   function publishMessage(){
     goEasy.publish({
        channel: 'notification',
        message: 'You received a new notification',
        onSuccess:function(){

          console.log("Publish message success.");

        },
        onFailed: function(error){

          console.log("Publish message failed, error code: "+ error.code +" Error message: "+ error.content);

        }
      });
   
   }
         
   function unsubscribe(){
        goEasy.unsubscribe({
          channel:"notification",
          onSuccess: function(){

            console.log("Cancel Subscription successfully.");

          },
          onFailed: function(error){

            console.log("Cancel the subscrition failed, error code: "+ error.code + "error message: "+ error.content);
          }

        });
      }
    
 </script>
</head>
<body>
 <input type="button" value="publish" onclick="publishMessage()"/>
 <input type="button" value="unsubscribe" onclick="unsubscribe()"/>
 <input type="button" value="subscribe" onclick="subscribe()"/>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
批量实现面向对象的实例代码
Jul 01 Javascript
js无刷新操作table的行和列
Mar 27 Javascript
jquery的attr方法禁用表单元素禁用输入内容
Jun 23 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
Apr 06 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
Jan 28 Javascript
jquery实现右侧栏菜单选择操作
Mar 04 Javascript
基于Vue2的移动端开发环境搭建详解
Nov 03 Javascript
js中常用的Math方法总结
Jan 12 Javascript
快速掌握jQuery插件开发
Jan 19 Javascript
教你用Cordova打包Vue项目的方法
Oct 17 Javascript
vue安装遇到的5个报错及解决方法
Jun 12 Javascript
vue多个元素的样式选择器问题
Nov 29 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
Nov 04 #Javascript
使用Ajax与服务器(JSON)通信实例
Nov 04 #Javascript
AngularJS过滤器filter用法实例分析
Nov 04 #Javascript
URL的参数中有加号传值变为空格的问题(URL特殊字符)
Nov 04 #Javascript
Angular页面间切换及传值的4种方法
Nov 04 #Javascript
AngularJS实现根据变量改变动态加载模板的方法
Nov 04 #Javascript
RGB和YUV 多媒体编程基础详细介绍
Nov 04 #Javascript
You might like
163的邮件用phpmailer发送(实例详解)
2013/06/24 PHP
php判断表是否存在的方法
2015/06/18 PHP
详解php中serialize()和unserialize()函数
2017/07/08 PHP
thinkPHP框架实现多表查询的方法
2018/06/14 PHP
javascript 实现字符串反转的三种方法
2013/11/23 Javascript
js数组循环遍历数组内所有元素的方法
2014/01/18 Javascript
在HTML代码中使用JavaScript代码的例子
2014/10/16 Javascript
jQuery实现的产品自动360度旋转展示特效源码分享
2015/08/21 Javascript
第九章之路径分页标签与徽章组件
2016/04/25 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
使用react-router4.0实现重定向和404功能的方法
2017/08/28 Javascript
微信小程序实现图片上传、删除和预览功能的方法
2017/12/18 Javascript
vue实现条件判断动态绑定样式的方法
2018/09/29 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
Vue 解决通过this.$refs来获取DOM或者组件报错问题
2020/07/28 Javascript
JS实现密码框效果
2020/09/10 Javascript
对python mayavi三维绘图的实现详解
2019/01/08 Python
python django model联合主键的例子
2019/08/06 Python
Python异常模块traceback用法实例分析
2019/10/22 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
使用python实现学生信息管理系统
2021/02/25 Python
Canvas图片分割效果的实现
2019/07/29 HTML / CSS
英国汽车和货车租赁网站:Hertz英国
2016/09/02 全球购物
Oakley官网:运动太阳镜、雪镜和服装
2016/09/30 全球购物
美国迪克体育用品商店:DICK’S Sporting Goods
2018/07/24 全球购物
全球独特生活方式产品和礼品购物网站:AHAlife
2018/09/18 全球购物
Nº21官方在线商店:numeroventuno.com
2019/09/26 全球购物
大型会议接待方案
2014/03/01 职场文书
公共艺术专业自荐信
2014/09/01 职场文书
党的群众路线批评与自我批评范文
2014/10/16 职场文书
幼儿园家长工作总结2015
2015/04/25 职场文书
2015年全国助残日活动方案
2015/05/04 职场文书
2015年端午节活动方案
2015/05/05 职场文书
故意杀人案辩护词
2015/05/21 职场文书
学校教代会开幕词
2016/03/04 职场文书
企业内部管理控制:采购授权审批制度范本
2020/01/19 职场文书