【问题标题】:Android Real-Time applicationAndroid 实时应用程序
【发布时间】:2014-12-20 22:35:38
【问题描述】:

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

所以我有一个解决方案:使用 Socket!!!

使用 Socket.oi 和 Node.js,我的梦想变成了真正的魔法!!! 但由于没有什么是免费的,因此保持插座连接对电池的成本非常高。有人争辩说,在没有通信、没有进出、没有循环的情况下使用Sockets,所以没有消耗。

我的朋友们,我已经阅读了很多文字,但不知道我应该遵循什么方法。我请求你的帮助。 Soket.oi? WebSocket ???

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

感谢大家的帮助!

【问题讨论】:

    标签: android node.js sockets websocket socket.io


    【解决方案1】:

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

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

    1. 用户启动您的客户端
    2. 客户端应用程序在 GCM 注册并将 google id 发送到您的服务器。
    3. 客户端应用建立套接字连接
    4. 您的服务器通过 GCM 套接字连接向客户端发送消息(如果它是通过特定连接建立的)
    5. 每条消息都有唯一的 ID,因此客户端可以忽略来自 Google 的第二条相同的套接字连接消息

    关于未发送的消息:

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

    电池消耗:

    不要获取唤醒锁来维持套接字连接!设备必须进入睡眠状态。 GCM 将唤醒手机。

    【讨论】:

    • 谢谢你!!!!我已经考虑过了......我的大问题是关于 GCM 有时不会发送通知,但你在我脑海中打开了一盏灯,我只需要成熟这个想法,保存到 DB 消息并通过套接字控制应用程序知道关于它。谢谢!!!!
    • @lfaa 不客气。如果我的回答真的对你有帮助,请将其标记为解决方案。谢谢!
    【解决方案2】:

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

    对于所有目的,GCM 已经足够了。

    【讨论】:

    • 谢谢你的关注...如果需要一直保持连接,套接字对象必须在可以通过广播启动和应用程序绑定的服务中运行...我的大问题是如何保持连接并同时节省电池。如何控制用户是否杀死,重启等,我们可以管理它而没有很多问题...但是感谢您的关注:-)
    • 嗨,我也有同样的问题。你有没有找到任何解决方案?任何帮助将不胜感激。
    猜你喜欢
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多