繁体   English   中英

如何使用NodeJS和SocketIO处理React-Native中的离线消息

[英]How to handle offline messages in React-Native using NodeJS and SocketIO

我目前正在使用 SocketIO 和 NodeJS 来处理消息。 但是问题是当用户离线时,其他用户无法收到消息。

我想出的解决方案是将消息存储在数据库中。

但是在获取消息和推送通知时出现了一个新问题。

如果我在应用程序处于后台/非活动状态时在服务器中获取“n”分钟。 服务端会有很多请求,个人认为效率低下。 而且它也会耗尽电池。

如何处理从数据库中获取消息或在应用程序中推送通知而不在“n”分钟内发出过多请求并消耗过多电量的正确方法是什么?

您需要在 App 中保存上次同步时间。 每当应用程序来自后台/非活动 state 时。 这次你需要调用 API。 此 API 将为您提供上次同步时间之后的所有消息和推送通知。 这样,通过一次 API 调用,您将能够获取所有消息和推送通知。 我曾使用这种方法在我的一个应用程序中同步我的数据。

我的建议是在 API 中实现一个后台作业系统,检查何时有新的通知要启动,或者通知已经准备好等待在队列中启动。 您可以搜索队列管理器,例如 Bull、Bee-Queue。

要在关闭/非活动应用程序中启动推送通知,您可以使用 OneSignal 或 Firebase 等服务。

几周前我实现了这一点,并这样做了。 API = Node.js,Bull Queue App = React Native,OneSignal

如果有人偶然发现了这个问题,请回到这个问题。

无论您是否使用 NodeJS/MongoDB 等,处理离线消息的最佳方法是将其存储在服务器的数据库中。 然后调用 API,每当移动应用程序进入前台时,它都会获取与用户 ID 相同的消息。

如果您的问题是您需要通知并且您正在使用

react-native-push-notifications / react-native-push-notification-ios

然后你应该使用数据通知在服务器端的通知参数中包含消息(假设你使用的是 Firebase 云消息传递)。 通过这种方式,您可以直接将消息保存在手机的数据库中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM