我是某种后端开发人员,不知道移动应用程序是如何工作的。但是我需要为移动聊天应用服务器提供架构。
我知道android应用程序使用google服务来接收来自firebase的推送通知,所以我们不需要在服务器上运行自己的应用程序并在无限循环中轮询新数据。
这对于推送通知来说是完美的,但是firebase通知体受限于4KB,不适合大消息。
所以我只能看到一个实现:
- Google服务轮询FCM(前gcm)通知
- 接收一些类似信号的通知
- 根据这个通知,我的应用程序去服务器下载新的消息
- 更新本地聊天数据
- 显示为新消息生成的本地通知
这种方法看起来很复杂,所以我不认为这是唯一可行的(和正确的)方法。
另一种方法是保持websocket会话每次打开或手动轮询服务器。但这两种操作会消耗太多电池。
那么现代聊天应用是如何保持同步的,即使他们关闭和设备屏幕关闭?
如果你真的想做一个现代的聊天应用程序,那么做一些研究XMPP以下是一些您可以遵循的最佳实践
-
在后台设置XMPP服务器,支持离线存储
-
使用客户端XMPP sdk为应用程序连接XMPP服务器。
-
在服务器连接丢失的情况下使用推送通知唤醒应用程序并重新连接到XMPP
-
尝试将大文件保存在不同的服务器上,并且只发送url如果您想保持文件url的私密性,则使用any支持上传和下载实现的客户端SDK私有文件,如AWSS3