向百万设备推送通知 + Apns + node.js
Posted
技术标签:
【中文标题】向百万设备推送通知 + Apns + node.js【英文标题】:Push notification to millions of device + Apns + node.js 【发布时间】:2017-07-10 14:19:21 【问题描述】:我的应用程序堆栈是 ios(前端)和 node.js(后端)。我必须向设备发送通知。在我的 node.js 部分中,我使用 apns 模块发送通知,它工作正常......
现在我必须一次发送大量通知,考虑到我有 10,000 台设备要通知,我遵循的逻辑是
我正在遍历 10,000 台设备并调用 apns 提供商。
1.为什么要使用这种for循环方法
我必须将每个通知详细信息存储在我的 mongodb 集合中,所以我采用了这种方法。
问题是某些设备收到通知并且太晚了(第二天)。
我也阅读了链接 https://www.raywenderlich.com/156966/push-notifications-tutorial-getting-started 说apns会拒绝。
上述方法是否正确也可以使所有通知传递者。
请分享您的想法。提前致谢。
【问题讨论】:
【参考方案1】:如果您需要在发送之前/之后处理每个单独的通知,我建议您从循环中更改设计,并让您查看 job queue。
使用这种设计模式,您不再需要循环通知并通过 APN 发送,而是将这些通知推送到队列/消息系统中,并让工作人员从队列中拉出并处理(通过 APN 发送并写入mongo) 通知。这种设计的好处在于,随着应用程序的增长,您可以添加更多的工作人员来处理增加的负载,而无需重写您的应用程序/架构。构建完成后,它可能看起来像这样:
我个人将RabbitMQ 用于我的工作队列,但这个决定需要您自己研究。例如,如果您不想管理消息系统,可以查看 AWS Simple Queue Service 之类的内容。
【讨论】:
【参考方案2】:我认为循环遍历 10,000 个设备 ID 并调用 APNS 提供商并不是正确的前进方向。文档在这里严格说 node-apn readme file 重用 apn.Provider 而不是每次都重新创建它以实现最佳性能。
如果您使用设备 ID 数组发送通知,而不仅仅是设备 ID,那么您将收到来自 APNS 的响应,其中提及每个设备的所有详细信息。
【讨论】:
以上是关于向百万设备推送通知 + Apns + node.js的主要内容,如果未能解决你的问题,请参考以下文章
向多个设备发送推送通知:一段时间后 APNS 响应是不是定的