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 相关文章推荐
用js重建星际争霸
Dec 22 Javascript
javascript js cookie的存储,获取和删除
Dec 29 Javascript
JavaScipt基本教程之JavaScript语言的基础
Jan 16 Javascript
javascript 设为首页与加入收藏兼容多浏览器代码
Jan 11 Javascript
JS获取页面窗口大小的代码解读
Dec 01 Javascript
JS关键字变色实现思路及代码
Feb 21 Javascript
JavaScript模块模式实例详解
Oct 25 Javascript
浅谈React之状态(State)
Sep 19 Javascript
小程序实现列表删除功能
Oct 30 Javascript
Vue.js递归组件实现组织架构树和选人功能
Jul 04 Javascript
VSCode 添加自定义注释的方法(附带红色警戒经典注释风格)
Aug 27 Javascript
Vue实现一种简单的无限循环滚动动画的示例
Jan 10 Vue.js
详解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
基于jQueryUI和Corethink实现百度的搜索提示功能
2016/11/09 PHP
PHP APP微信提现接口代码
2018/09/30 PHP
javascript 快速排序函数代码
2012/05/30 Javascript
JS隐藏参数post传值实例
2013/04/18 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
2014/05/05 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
JavaScript iframe数据共享接口实现方法
2016/01/06 Javascript
jQuery Easyui datagrid/treegrid 清空数据
2016/07/09 Javascript
js print打印网页指定区域内容的简单实例
2016/11/01 Javascript
详解angularJS自定义指令间的相互交互
2017/07/05 Javascript
使用vue脚手架(vue-cli)搭建一个项目详解
2019/05/09 Javascript
Vue.js实现tab切换效果
2019/07/24 Javascript
js正则表达式简单校验方法
2021/01/03 Javascript
[39:52]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第一场
2018/04/04 DOTA
python求素数示例分享
2014/02/16 Python
利用Python学习RabbitMQ消息队列
2015/11/30 Python
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
python 3.6.5 安装配置方法图文教程
2018/09/18 Python
Python中fnmatch模块的使用详情
2018/11/30 Python
学生信息管理系统Python面向对象版
2019/01/30 Python
python开发之anaconda以及win7下安装gensim的方法
2019/07/05 Python
Python学习笔记之Zip和Enumerate用法实例分析
2019/08/14 Python
在echarts中图例legend和坐标系grid实现左右布局实例
2020/05/16 Python
python os模块常用的29种方法使用详解
2020/06/02 Python
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
俄罗斯马克西多姆家居用品网上商店:Максидом
2020/02/06 全球购物
制药工程专业应届生求职信
2013/09/24 职场文书
学生打架检讨书1000字
2014/01/16 职场文书
工程造价专业求职信
2014/07/17 职场文书
慈善捐赠倡议书
2014/08/30 职场文书
教师竞聘上岗演讲稿
2014/09/03 职场文书
综合管理员岗位职责
2015/02/11 职场文书
酒店员工管理制度
2015/08/05 职场文书
校园音乐节目广播稿
2015/08/19 职场文书
Python 阶乘详解
2021/10/05 Python
pytorch实现加载保存查看checkpoint文件
2022/07/15 Python