Android实时应用程序

Android实时应用程序,android,node.js,sockets,websocket,socket.io,Android,Node.js,Sockets,Websocket,Socket.io,我正在使用应用程序在用户之间共享任务。通过谷歌云消息,我可以通知用户目标,他有一个新的任务共享。问题是:GCM不提供交货保证。如果有人花了几分钟的时间来传递消息,或者没有收到消息,他会使用WhatsApp这样的应用程序吗?这就是我对GCM的问题 所以我有了一个解决方案:使用插座 使用Socket.oi和Node.js,我的梦想实现了,真的像魔术一样工作!!! 但由于没有免费的,保持插座连接的电池成本非常高。有些人认为,使用套接字时没有通信,没有输入或输出,没有循环,因此没有消耗 我的朋友们,我读

我正在使用应用程序在用户之间共享任务。通过谷歌云消息,我可以通知用户目标,他有一个新的任务共享。问题是:GCM不提供交货保证。如果有人花了几分钟的时间来传递消息,或者没有收到消息,他会使用WhatsApp这样的应用程序吗?这就是我对GCM的问题

所以我有了一个解决方案:使用插座

使用Socket.oi和Node.js,我的梦想实现了,真的像魔术一样工作!!! 但由于没有免费的,保持插座连接的电池成本非常高。有些人认为,使用套接字时没有通信,没有输入或输出,没有循环,因此没有消耗

我的朋友们,我读了很多文章,不知道应该采取什么方法。我请求你的帮助。Soket.oi?WebSocket

如何保持与我的服务器的连接永久保存大部分电池


我感谢大家的帮助

Socket.io很好,在许多实时应用程序中肯定很有用,但是当用户终止应用程序时会发生什么呢?或者如果用户重新启动手机?那么您将如何收到通知


无论出于何种目的,GCM都足够好。

您需要混合使用套接字连接和GCM。这两种连接类型都不能保证传递,所以您需要实现检查消息历史一致性的机制

简化的场景可能如下所示:

  • 用户启动您的客户端
  • 客户端应用程序在GCM注册并将google id发送到您的服务器
  • 客户端应用程序建立套接字连接
  • 您的服务器通过GCM套接字连接向客户端发送消息(如果是通过特定连接建立的)
  • 每条消息都有唯一的id,因此客户端可以忽略来自Google的套接字连接的第二条相同消息
  • 关于未送达的邮件:

    当客户端通过套接字连接连接到服务器时,它应该接收响应,并将消息历史记录放在其中。它不应该是完整的历史记录,它可能只是最后一条消息(以防您开发聊天应用程序)。然后,客户机只需检查他是否已将最后一条消息通知用户。如果没有,那么您的客户机向您的服务器发出请求(http或通过套接字),并接收未送达的消息

    电池消耗:


    不要获取唤醒锁以保持插座连接!设备必须进入睡眠状态。GCM将唤醒手机。

    谢谢你,伙计!!!!我已经考虑过了。。。我最大的问题是关于GCM,它有时不发送通知,但你打开了我脑海中的一盏灯,我只需要使这个想法成熟,保存到DB消息,并通过套接字控制应用程序知道什么。谢谢@不客气。如果我的回答真的对你有帮助,请将其标记为解决方案。谢谢谢谢你的关注。。。在需要保持连接始终处于活动状态的情况下,套接字对象必须在服务中运行,在服务中可以通过广播启动,并通过应用程序绑定。。。我最大的问题是如何在保持连接的同时节省电池。如何控制,如果用户杀死,重新启动等,我们可以管理它没有很多问题。。。但是谢谢你们的关注:-)嗨,我也有同样的问题。你找到解决这个问题的办法了吗?任何帮助都将不胜感激。