V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
happybirthday
V2EX  ›  Java

实时推送道路上少走弯路---GoEasy 推送

  •  
  •   happybirthday · 2017-01-09 10:56:36 +08:00 · 2437 次点击
    这是一个创建于 2670 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前项目需要做一个推送功能,最开始我没有想过用第三方推送服务。想着可以用已知技术方式完成,例如定时到服务器看看是否有新的消息,有的话,就读取下来并显示,但是这种方式很浪费客户以及服务器的资源,当然这种方式在我们项目里是不可取的。再后来我在网上搜了一些,说是可以用 web socket 实现我的功能,但是我在网上查了一下使用方式,看了一上午一头雾水。即使我可以一周两周内用 websocket 实现我的推送,那我又拿什么来保证我自己写的推送程序的到达率和速度呢?维护成本一定也会随着增加!况且我们也不允许花太多开发成本在这个项目上!

    经过上面的一番周折后,我跟项目组提出使用第三方的推送服务,原因很简单,第三方推送服务可以满足我们的需求,缩短我们的开发测试维护成本,术业有专攻,它们在推送方面更有优势,服务质量也有保证!经过几番对比后,我们最终决定使用了 GoEasy 推送。 它真正的从根本上解决了我们的问题!对于他们的服务质量很满意,注册成功后,你可以获得他们的联系方式,问题处理得很及时,不像有些公司的客服,发封邮件好几天都没有任何信息!从而也解决了我们的后顾之忧!

    写这篇文章的目的很简单,希望其他同行在做实时推送时少走些弯路!好的东西应该分享给更多人!

    下面我将会分四部分来说明一下如何用 GoEasy 实现实时推送!如果大家有任何问题,可以发我私人邮箱 [email protected]

    1.从 GoEasy 获取 appkey

    appkey 是验证用户的有效性的唯一标识。

    a. 注册账号。 GoEasy 官网: https://goeasy.io

    b. 用注册好的账号登录到 GoEasy 的后台管理系统,创建您自己应用( application ).

    c. Application 创建好之后系统会自动为您生成 appkey

    系统会生成两个 keys ,一个 Super key 和一个 Subscribe key ;它们的区别在于前者既可以订阅又可以推送,但后者只能用于订阅。

    2.GoEasy 实现向特定用户群推送的原理

    知道了他们的推送原理,可以更加方便我们了解他们的服务,以及理解我们写的代码。其实原理很简单,只需要确定哪些用户需要接收信息,然后让这些用户都订阅一个相同的 channel (频道)。 然后再往这个平台上推送消息即可!所有关键在于 channel , channel 一致,则可以接收到信息,否则收不到!

    对于订阅必须要的信息有: Appkey, channel

    对于推送必须要的信息有: Appkey, channel, content

    3.用 GoEasy 实现订阅(接收)的实例

    实现步骤:

    a. 引入 goeasy.js

    b. 创建 goeasy 实例 /对象

    c. 用 subscribe 函数进行订阅, 然后在回调函数里接收信息即可

    实战: <script type="text/javascript" src="&lt;a href=" https:="" <a="" href="http://cdn.goeasy.io" rel="nofollow">cdn.goeasy.io="" goeasy.js"="" rel="nofollow">https://cdn.goeasy.io/goeasy.js"></script>

    <script type="text/javascript">
    
        var goEasy = new GoEasy({appkey: 'your appkey'});
        
    	goEasy.subscribe({
        
                        channel: 'your_channel',
                        
                        onMessage: function(message){
                        
                            alert('接收到消息:'+message.content);//拿到了信息之后,你可以做你任何想做的事
                            
                        }
                        
        });
        
     </script>
    

    有了这几行代码后,只要保证网络畅通的情况下,页面会自动弹出你从任何平台上推送的信息。

    4.用 GoEasy 实现推送及接收的实例

    目前 GoEasy 支持三种推送方式: Java 后台推送(它们有提供 JAVA SDK 和 maven 远程仓库), JS 推送, RestAPI 推送(有了 RestAPI ,我们就可以用 PHP, .NET, Ruby …来推送信息了,很方便)

    说了这么多,来我们看一下怎么用 GoEasy 的三种方式分别实现推送吧。

    4.1. 用 GoEasy SDK 推送

    a. Java SDK 的获取方式,方式一,直接在 goeasy 的官网上进行下载;方式二,用 maven 远程库直接导入到项目中。尽管官网上已经做了相同的说明了,我这里还是把关键点帖出来,方便大家查看。

    GoEasy SDK 下载链接: http://maven.goeasy.io/service/local/artifact/maven/redirect?r=releases&g=io.goeasy&a=goeasy-sdk&v=LATEST&e=jar

    GoEasy 远程 maven 库的配置:

    <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.1</version>
               
    </dependency>
    
      需要注意的是: GoEasy 需要依赖两个额外的 jar 包:
      
      gson.jar : http://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.3.1/gson-2.3.1.jar
      
     slf4j-api.jar : http://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.2/slf4j-api-1.7.2.jar
    

    b. 实例化 GoEasy 对象

    GoEasy goEasy = new GoEasy("your appkey");

    c. 推送消息

    goEasy.publish('your_channel', '第一条用 GoEasy 推送的消息,你真棒!');

    4.2. JS 推送

    a. 引入 goeasy.js <script type="text/javascript" src="&lt;a href=" https:="" <a="" href="http://cdn.goeasy.io" rel="nofollow">cdn.goeasy.io="" goeasy.js"="" rel="nofollow">https://cdn.goeasy.io/goeasy.js"></script>

    b. 实例化 Goeasy 对象,并用 publish 函数进行推送

    <script type="text/javascript"> var goEasy = new GoEasy({appkey: 'your appkey'}); goEasy. publish ({ channel: 'your_channel', message: '用 goeasy 推送的第二条消息, 棒极了!' }); </script>

    4.3. 用 RestAPI 进行推送

    URL: https://goeasy.io/goeasy/publish

    Method: Post

    参数: appkey, channel, content

    例如: https://goeasy.io/goeasy/publish?appkey={your_appkey}&channel={your_channel}&content={your_message}

    GoEasy 官网: https://goeasy.io

    快速入门: https://goeasy.io/www/started.jsp

    文档下载: https://goeasy.io/www/docs.jsp

    1 条回复    2017-01-09 19:36:26 +08:00
    444683462
        1
    444683462  
       2017-01-09 19:36:26 +08:00
    虽然明知道是广告 作为老用户 我还是赞一个 确实简单省事
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1389 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 16:49 · PVG 00:49 · LAX 09:49 · JFK 12:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.