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 相关文章推荐
解决AJAX中跨域访问出现'没有权限'的错误
Aug 20 Javascript
javascript hashtable 修正版 下载
Dec 30 Javascript
Jquery中对数组的操作代码
Aug 12 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
Aug 08 Javascript
node.js中的fs.closeSync方法使用说明
Dec 17 Javascript
jquery实现点击页面计算点击次数
Jan 23 Javascript
jQuery垂直多级导航菜单代码分享
Aug 18 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
Jan 29 Javascript
EasyUI创建对话框的两种方式
Aug 23 Javascript
原生js实现淘宝购物车功能
Jun 23 Javascript
React从react-router路由上做登陆验证控制的方法
May 10 Javascript
浅谈Express.js解析Post数据类型的正确姿势
May 30 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
php实现的遍历文件夹下所有文件,编辑删除
2010/01/05 PHP
深入密码加salt原理的分析
2013/06/06 PHP
PHP解耦的三重境界(浅谈服务容器)
2017/03/13 PHP
php实现支付宝当面付(扫码支付)功能
2018/05/30 PHP
ExtJS Window 最小化的一种方法
2009/11/18 Javascript
基于jquery实现一张图片点击鼠标放大再点缩小
2013/09/29 Javascript
JavaScript中具名函数的多种调用方式总结
2014/11/08 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
JavaScript中创建对象的模式汇总
2016/04/19 Javascript
JavaScript校验Number(4,1)格式的数字实例代码
2017/03/13 Javascript
vue实现a标签点击高亮方法
2018/03/17 Javascript
vue router 跳转后回到顶部的实例
2018/08/31 Javascript
微信小程序实现文件、图片上传功能
2020/08/18 Javascript
JavaScript实现下拉列表
2021/01/20 Javascript
实例解析Python设计模式编程之桥接模式的运用
2016/03/02 Python
windows下python之mysqldb模块安装方法
2017/09/07 Python
浅述python中深浅拷贝原理
2018/09/18 Python
使用Python进行中文繁简转换的实现代码
2019/10/18 Python
wxpython实现按钮切换界面的方法
2019/11/19 Python
使用python-cv2实现视频的分解与合成的示例代码
2020/10/26 Python
惠普墨西哥官方商店:HP墨西哥
2016/12/01 全球购物
Nebula美国官网:便携式投影仪
2019/03/15 全球购物
Hotels.com拉丁美洲:从豪华酒店到经济型酒店的预定优惠和折扣
2019/12/09 全球购物
英国奢侈品在线精品店:Hervia
2020/09/03 全球购物
家长给孩子的表扬信
2014/01/17 职场文书
小学语文教学反思
2014/02/10 职场文书
技术负责人任命书
2014/06/05 职场文书
计算机网络专业求职信
2014/06/05 职场文书
秋季运动会演讲稿
2014/09/16 职场文书
党员学习新党章思想汇报
2014/10/25 职场文书
2015医德医风个人工作总结
2015/04/02 职场文书
车辆管理制度范本
2015/08/05 职场文书
大学班干部竞选稿
2015/11/20 职场文书
会计专业自荐信范文
2019/05/22 职场文书
导游词创作书写原则以及开场白技巧怎么学?
2019/09/25 职场文书
html+css实现分层金字塔的实例
2021/06/02 HTML / CSS