【问题标题】:what technology used in mobile chat apps to receive messages?移动聊天应用程序中使用什么技术来接收消息?
【发布时间】:2021-09-07 07:39:11
【问题描述】:

我是某种后端开发人员,不知道移动应用程序的工作原理。但我需要为移动聊天应用服务器提供架构。

我知道安卓应用程序使用谷歌服务来接收来自 firebase 的推送通知,所以我们不需要在无限循环中运行自己的应用程序并在服务器上轮询新数据。

这对于推送通知来说是完美的,但 Firebase 通知正文限制为 4KB,不适合大消息。

所以我只能看到一个实现:

  1. Google 服务轮询 FCM(前 GCM)通知
  2. 接收一些类似信号的通知
  3. 根据此通知,我的应用程序会转到服务器并下载新消息
  4. 更新本地聊天数据
  5. 显示本地生成的新消息通知

这种方式看起来相当复杂,所以我不认为这是唯一可能(且正确)的方式。

另一种方法是保持每次打开 websocket 会话或手动轮询服务器。但是这两个操作应该会消耗很多电池。

那么现代聊天应用程序如何在关闭和设备屏幕关闭的情况下保持同步?

【问题讨论】:

  • 您应该检查每个平台的背景限制。 Android有Doze modeiOS has their own background restrictions
  • 你是铁杆。简而言之,我们可能会使用 XMPP / socket / WebRTC / 数据库同步 + 远程通知。 (通知不可靠,仅供用户使用)
  • @Horst socketWebRTC 必须保持会话打开,这会耗尽电池电量。 database syncing + remote notification → 你是这个意思吗? developer.intersoftsolutions.com/display/crosslight/… 在我的问题中,这非常接近于 5 步实现。
  • 您可以为此使用 Firebase 实时数据库
  • @rzlvmp 我的意思是(XMPP/socket/WebRTC/数据库同步)+远程通知。我们不会使用链接方式更新消息,因为用户可以屏蔽通知功能。

标签: android ios chat messaging


【解决方案1】:

如果您真的想制作现代聊天应用程序,那么请对 XMPP 进行一些研究 这些是您可以遵循的一些最佳实践

  1. 在支持离线存储的后端设置 XMPP 服务器

  2. 使用客户端 XMPP SDKS 让应用连接 XMPP 服务器。

  3. 在服务器连接丢失的情况下使用推送通知唤醒应用 并重新连接到 XMPP

  4. 尝试将大文件保存在不同的服务器上并仅发送 url body 如果你想保持你的文件 url 私有然后使用任何 支持上传下载的客户端SDK 像 AWSS3 这样的私有文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 1970-01-01
    相关资源
    最近更新 更多