专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Go

大道至简-GoEasy推送

发布时间:2011-06-29 17:55:20 文章来源:www.iduyao.cn 采编人员:星星草
大道至简--GoEasy推送

获取变推送,被动变主动

以往一提到需要数据实时显示,大家首先想到的就是利用轮询方式定时向后台去查看有没有信息,有的话,web页面将向下拉取这些数据。慢慢地大家意识到这种方式十分消耗客户端和服务端的资源,那么怎么做是最优方式呢? 将被动变主动!就如同对讲机一样,当对方有话要讲时直接讲你就可以听到了,而不是你不停问对方有话讲没。由此而衍生出的技术有websocket, socket.io。它们的共同特点都是在客户端和服务器端建立一个管道,通过这个管道服务器端可以直接将实时信息主动推送给客户端。

 

直击痛点

恐怕问题又来了,如何正确有效的将websocket, socket.io应用到你的系统中呢?于是乎你开始找谷哥,找度娘,发现大家的实现实例都是长篇大论,代码都是几百行。头痛吗?如果这时有人已经集成了这些技术,但是代码复杂度降低了几十个点,你是不是心动了呢?

 

技术选择

到目前为止能够提供推送服务的技术不在少数,什么PubNub,极光,云推,友盟,GoEasy等。如何选择?我选择的原则是代码是否简单,代码是否易懂,服务是否稳定。经过对比,PubNub和GoEasy在代码的简洁易懂方面是达到了我的要求的,代码实现思路跟用对讲机通信一样简单明了。但是由于PubNub是国外的产品,有时候访问官网需要连接VPN,考虑到系统用户都在国内及服务的稳定性,最后GoEasy拔得头筹。

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

 

大道至简

既然选择了GoEasy, 不在此介绍一下它的代码,谁知道我是不是口说无凭?下面我用对讲机来比喻GoEasy实现推送消息的过程。
假如你是你是服务器端,你的女朋友是客户端:
1.  既然要通信,至少你和女朋友每人要有一台对讲机吧。
      服务器端:引入GoEasy到项目中           

<repository>
  <id>goeasy</id>
  <name>goeasy</name>
  <url>http://maven.goeasy.io/content/repositories/releases/</url>
</repository>
...
<dependency>
  <groupId>io.goeasy</groupId>
  <artifactId>goeasy-sdk</artifactId>
  <version>0.3.3</version>
</dependency>

 

     客户端:引入GoEasy.js

<script type="text/javascript" src="http(s)://cdn.goeasy.io/goeasy.js"></script>

 

2. 打开对讲机的电源,确保你们在可通讯范围内。
   服务器端:创建一个GoEasy对象,appkey连接到GoEasy的凭证

GoEasy goEasy = new GoEasy("appkey" );

 

   客户端:创建一个GoEasy对象,appkey连接到GoEasy的凭证

<script type="text/javascript">var goEasy = new GoEasy({
               appkey: 'Your app key here'
               });
</script>

 

3.  将你们的对讲机调到同一频道,你开始讲话,女朋友准备收听
      客户端:订阅频道1

goEasy.subscribe({
                 channel: 'channel1',
                 onMessage: function(message){
                              alert('Meessage received:'+message.content);//女朋友听到的内容
                           }
                    });

 

     服务器端:往频道1推消息

 goEasy.publish('channel1', '妹妹,我宣你!');

 

这里服务器端使用的是GoEasy的Java SDK, 如果你使用的是其他语言,则可以通过restful API来推送消息,一个url, POST 请求,三个参数,就可以轻松搞定!

如果大家有其他更好的选择,欢迎留言讨论!


 

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

  • ModernUI课程:定义一个Logo

    ModernUI教程:定义一个Logo ModernWindow的标题栏包含了一块区域用来显示自定义的窗体Logo: 这个窗体logo通过ModernWindow.LogoD...

  • Django忘记管理员账号和密码的解决方法

    Django忘记管理员账号和密码的解决办法 看着Django的教程学习搭建网站,结果忘记第一次创建的账号和密码了。结果搭建成功以后,一直...

  • GO语言小结(1)——基本知识

    GO语言总结(1)——基本知识 1、注释(与C++一样)   行注释://  块注释:/*   ...  */ 2、标识符   可以这么说,除了数字开头...

  • golang 惯用的文件读取方式

    golang 常用的文件读取方式 Golang 的文件读取方法很多,刚上手时不知道怎么选择,所以贴在此处便后速查。 一次性读取 小文件推荐一...

  • 查询深圳市通相关信息

    查询深圳通相关信息 用 HTTP.GET 从开放 API 中查询深圳通信息,然后将 JSON 数据存入结构体中,再格式化输出。 注意:获取的并不是实...

  • Go语言设计模式实践:结合(Composite)

    Go语言设计模式实践:组合(Composite) 关于本系列 这个系列首先是关于Go语言实践的。在项目中实际使用Go语言也有段时间了,一个体会就...

  • 列出索引和遍历目录

    列出目录和遍历目录 获取目录列表用 ioutil.ReadDir(),遍历目录用 filepath.Walk(),使用方法请参考文章示例。 示例代码: package ma...

  • io 包的惯用接口速记

    io 包的常用接口速记 我没有 C/C++ 基础,没有接口的概念,且从 Python 投奔而来,Python 的极简主义(一个结果往往只提供一个方法),让我在...

  • 代理服务扩充

    代理服务扩展 之前自己实现了一个代理服务,当时考虑的是只要支持SOCKS5就好了,因为我经常用CHROME,配合着SwitchySharp,体验还是很棒...

  • 文件的创造与打开

    文件的创建与打开 文件操作是个很重要的话题,使用也非常频繁,熟悉如何操作文件是必不可少的。Golang 对文件的支持是在 os package ...

热门推荐: