【问题标题】:Using websockets for Android chat使用 websockets 进行 Android 聊天
【发布时间】:2015-07-12 00:38:05
【问题描述】:

我正在使用 WebSockets 在我的 Android 应用程序中进行实时聊天。当应用未激活且用户收到消息时,GCM 会在后台打开 websockets 服务并重新启用实时聊天。

我已阅读有关 WebSocket 和电池寿命的担忧,但如果我仅在用户有新消息要响应时使用 GCM 开启 WebSocket,这是否是允许实时聊天的可行解决方案?

【问题讨论】:

    标签: android websocket chat real-time


    【解决方案1】:

    不,我不这么认为。GCM 并非 100% 可靠。 他们的文件说:

    GCM 通常在消息发送后立即传递消息。但是,这可能并不总是可能的。例如,如果平台是 Android,则设备可能会关闭、离线或不可用。或者,发送者本身可能会通过使用 delay_while_idle 标志请求在设备变为活动状态之前不传递消息。最后,GCM 可能会故意延迟消息,以防止应用程序消耗过多资源并对电池寿命产生负面影响。

    发生这种情况时,GCM 将存储消息并在可行时尽快发送。虽然在大多数情况下这很好,但有些应用程序可能永远不会传递迟到的消息。例如,如果消息是来电或视频聊天通知,它只会在通话终止之前的一小段时间内有意义。或者,如果消息是一个活动的邀请,如果在活动结束后收到,它就没有用了。

    因此,如果客户端未连接,您可以使用 GCM 重新连接到 webSockets,但是一旦建立连接,那么所有通信都应该在套接字本身上。

    【讨论】:

    • 这正是我设置它的方式。 GCM 仅在设备未通过 WebSockets 连接时使用,否则所有通信都通过 WebSockets
    猜你喜欢
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 2014-06-03
    • 2016-02-15
    • 2020-12-29
    相关资源
    最近更新 更多