socket.io - 如何使用socketio将推送通知发送到android设备,当它将返回在线时
问题描述
我花了很多时间研究不同平台(android、ios 应用程序、web 应用程序)之间的即时消息传递(以及通知)。
我已经弄清楚了主要概念(不过我可能是错的。如果我错了,请纠正我)。也就是说,我需要:
- 一个网络服务器(比如说,它由nodejs+express+socketio 组成)
- 一些客户端将通过 socketio-client 连接到服务器(android 也可以是客户端)
- 消息代理(rabbitmq 或 redis 或 mqtt)也可用于将传入消息临时存储在其上,并在将其保存到数据库后将其发送给目标用户
现在的主要问题是离线推送通知。假设 Web 客户端向 android 客户端发送消息,而 android 现在处于离线状态。当设备恢复在线时,如何向其推送有关其待处理消息的通知。
解决方案
使用 MQTT“发布”数据包,您可以设置“保留”标志,这样当您的 Android 设备连接并订阅已发布的主题时,它们将收到该主题的最后一个保留的 MQTT 数据包。
因此,如果您只需要发送最后一条消息,那么这对您来说应该可以正常工作。如果您的设备需要自上次在线以来发送的所有消息,那么您将需要不同的机制。
推荐阅读
- android - 当键盘在android中显示时视图被覆盖
- python - 迭代字典中的字典,字典对象变成字符串?
- c++ - DevIL/OpenIL 没有加载 alpha 通道
- powershell - powershell get-aduser 特定日期范围
- java - 如何避免调用 CompletableFuture.thenCompose(x -> x)?
- wordpress - 在 Wordpress 自定义帖子类型上具有动态重写标签的自定义永久链接
- ruby-on-rails - 编辑博客时的 Heroku 问题(随机路由到 Matchheight.js)
- python - 如何在 Django 序列化程序验证中引发多个 ValidationErrors(包括自定义错误)
- multithreading - 是否可以并行化或展开此循环?
- javascript - 使用 ImageField 在 Ajax 中序列化(表单)