我正在开发app用户之间的共享任务。通过Google Cloud Messaging,我可以通知用户目标他已共享新任务。问题是:GCM不提供送货保证。有人会使用像WhatsApp这样的应用程序,如果他花了几分钟时间传递消息或者没有到手?这是我对GCM的问题。
所以我有一个解决方案:使用Socket !!!
使用Socket.oi和Node.js,我的梦想变得真正像魔术一样! 但由于没有任何东西是免费的,保持插座连接的电池成本非常高。有些人认为在没有通信的情况下使用Sockets,没有任何进出,没有循环,所以没有消耗。
我的朋友们,我读了很多文字,不知道应该遵循什么方法。我问你的帮助。 Soket.oi? WebSocket ???
如何保持与我的服务器permante的连接,保留大部分电池?
感谢大家的帮助!
答案 0 :(得分:0)
Socket.io很好,在许多实时应用程序中肯定很有用,但是当应用程序被用户终止时会发生什么?或者,如果用户重新启动手机?那你怎么会收到通知呢?
出于所有目的,GCM足够好了。
答案 1 :(得分:0)
您需要使用套接字连接和GCM的混合。两种连接类型都不保证传递,因此您需要实现检查消息历史记录一致性的机制。
简化的场景可能如下所示:
关于未发送消息:
当客户端通过套接字连接连接到服务器时,它应该接收应该放置消息历史的响应。它不应该是完整的历史记录,它可能只是最后的消息(如果你开发聊天应用程序)。然后,客户端只检查他是否已通知用户有关上一条消息的信息。如果没有,那么您的客户端向您的服务器发出请求(http或通过套接字)并接收未传递的消息。
电池消耗:
不要获取唤醒锁以维持套接字连接!设备必须睡觉。 GCM将唤醒手机。