Android Pusher VS客户端每秒向服务器请求更改

Android Pusher VS客户端每秒向服务器请求更改,android,node.js,real-time,pusher,Android,Node.js,Real Time,Pusher,我正试图实现从服务器到定制安卓设备的实时推送。(在安卓操作系统上运行的设备)。我无法使用GCN,因为没有唯一的令牌 这是交易 问题 我正在从门户网站向服务器发布一条消息 我想把消息推送到android设备上 下面是建议的解决方案,哪一个是最好的 解决方案1 插入带有“创建日期”时间戳的消息 让android设备每秒请求服务器通过“创建日期”检查任何新消息 解决方案2 将Pusher与安装在android设备中的Pusher java客户端库一起使用 我正在考虑使用解决方案2,我认为这是最理

我正试图实现从服务器到定制安卓设备的实时推送。(在安卓操作系统上运行的设备)。我无法使用GCN,因为没有唯一的令牌


这是交易

问题

  • 我正在从门户网站向服务器发布一条消息
  • 我想把消息推送到android设备上

  • 下面是建议的解决方案,哪一个是最好的

    解决方案1

  • 插入带有“创建日期”时间戳的消息
  • 让android设备每秒请求服务器通过“创建日期”检查任何新消息
  • 解决方案2

  • 将Pusher与安装在android设备中的Pusher java客户端库一起使用

  • 我正在考虑使用解决方案2,我认为这是最理想的!由于我不太确定Pusher是如何工作的,Pusher的体系结构是否与解决方案1相同

    任何善良的灵魂都会回答我的问题


    提前感谢。

    体系结构在两个方面有所不同:

  • 推送服务将在移动设备和服务之间创建持久连接,因此当新数据可用时,可以立即将其推送到移动设备
  • Pusher为您提供了实时基础设施,因此您无需处理多个轮询请求,只需向Pusher发出一个HTTP请求,它就会将您发送的消息推送到移动客户端。这是一个比自己构建更容易的体系结构,如果需要横向扩展,您会看到显著的好处
  • 代码 在Android应用程序中:

    Pusher pusher = new Pusher(YOUR_APP_KEY);
    
    pusher.connect();
    
    // Subscribe to a channel
    Channel channel = pusher.subscribe("my-channel");
    
    // Bind to listen for events called "my-event" sent to "my-channel"
    channel.bind("my-event", new SubscriptionEventListener() {
        @Override
        public void onEvent(String channel, String event, String data) {
            System.out.println("Received event with data: " + data);
        }
    });
    
    在Web服务器(节点)上:


    为确保频道只能由您应该使用的消息的预期收件人订阅。

    使用PubNub,您可以让您的Android客户端在前台和后台服务(而不是使用GCM)中订阅频道,并始终实时接收消息。向消息负载添加某种消息id将允许您唯一地标识消息。如果您需要为您的服务提供安全保护,您可以启用TLS(FKA、SSL)、AES,并使用我们的访问管理器授权每个用户访问通道。更多问题,请联系support@pubnub.com@CraigConover,谢谢你的建议。我认为pusher本身有一个pusher,它有一个java客户机库。基本上,轮询服务器(多请求)与套接字(本例中为pusher)之间的区别在于,套接字保留一个持久连接,而轮询服务器进行更改基本上是对服务器的大量请求和响应,无法真正扩展。轮询有一些缺点。1.如果数据更新频繁且轮询间隔较短,则资源使用效率(客户端和服务器)可能较低。2.频繁轮询意味着您需要更快地横向扩展基础架构。3.如果数据频繁更新,则在轮询间隔期间,应用程序中的数据已过期(过时)
    var Pusher = require('pusher');
    var pusher = new Pusher({appId: ID, key: KEY, secret: SECRET});
    pusher.trigger('my-channel', 'my-event', {some: 'data'});