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 相关文章推荐
jQuery TextBox自动完成条
Jul 22 Javascript
动态加载js和css(外部文件)
Apr 17 Javascript
基于jQuery实现图片的前进与后退功能
Apr 24 Javascript
Node.js与PHP、Python的字符处理性能对比
Jul 06 Javascript
javascript数据类型示例分享
Jan 19 Javascript
js对字符的验证方法汇总
Feb 04 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
Oct 01 Javascript
JS+CSS实现的蓝色table选项卡效果
Oct 08 Javascript
AngularJS 输入验证详解及实例代码
Jul 28 Javascript
React组件之间的通信的实例代码
Jun 27 Javascript
js中bool值的转换及“&amp;&amp;”、“||”、 “!!”详解
Dec 21 Javascript
说说如何利用 Node.js 代理解决跨域问题
Apr 22 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
用缓存实现静态页面的测试
2006/12/06 PHP
让你成为更出色的PHP开发者的10个技巧
2011/02/25 PHP
ubuntu12.04使用c编写php扩展模块教程分享
2013/12/25 PHP
codeigniter集成ucenter1.6双向通信的解决办法
2014/06/12 PHP
ThinkPHP权限认证Auth实例详解
2014/07/22 PHP
thinkphp连贯操作实例分析
2014/11/22 PHP
php实现的中秋博饼游戏之绘制骰子图案功能示例
2017/11/06 PHP
url参数中有+、空格、=、%、&amp;、#等特殊符号的问题解决
2013/05/15 Javascript
移动节点的jquery代码
2014/01/13 Javascript
javascript对象的使用和属性操作示例详解
2014/03/02 Javascript
JS JQUERY实现滚动条自动滚到底的方法
2015/01/09 Javascript
基于JavaScript代码实现兼容各浏览器的设为首页和加入收藏
2016/01/07 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
2016/06/12 Javascript
jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
2017/08/23 jQuery
ReactJS实现表单的单选多选和反选的示例
2017/10/13 Javascript
js 两数组去除重复数值的实例
2017/12/06 Javascript
vue 之 css module的使用方法
2018/12/04 Javascript
JS异步执行结果获取的3种解决方式
2019/02/19 Javascript
JavaScript实现公告栏上下滚动效果
2020/03/13 Javascript
python之模拟鼠标键盘动作具体实现
2013/12/30 Python
python检测是文件还是目录的方法
2015/07/03 Python
Python读取指定日期邮件的实例
2019/02/01 Python
基于python实现百度翻译功能
2019/05/09 Python
用sleep间隔进行python反爬虫的实例讲解
2020/11/30 Python
解决pycharm 格式报错tabs和space不一致问题
2021/02/26 Python
HTML5无刷新改变当前url的代码
2017/03/15 HTML / CSS
日本钓鱼渔具和户外用品网上商店:naturum
2016/08/07 全球购物
德国汽车零件和汽车配件网上商店:kfzteile24
2018/11/14 全球购物
GE设备配件:GE Appliance Parts(家电零件、配件和滤水器)
2018/11/28 全球购物
优秀毕业生求职信范文
2014/01/02 职场文书
主题实践活动总结
2014/05/08 职场文书
教师求职自荐信
2015/03/26 职场文书
2015年出纳年终工作总结
2015/05/14 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书
浅谈Python类的单继承相关知识
2021/05/12 Python
浅谈自定义校验注解ConstraintValidator
2021/06/30 Java/Android