Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将通知推送到数百万设备+;Apns+;node.js_Node.js_Mongodb_Notifications_Apple Push Notifications - Fatal编程技术网

将通知推送到数百万设备+;Apns+;node.js

将通知推送到数百万设备+;Apns+;node.js,node.js,mongodb,notifications,apple-push-notifications,Node.js,Mongodb,Notifications,Apple Push Notifications,我的应用程序堆栈是ios(前端)和node.js(后端)。我必须向设备发送通知。在my node.js部分,我使用apns模块发送通知,工作正常 现在我必须发送大量通知,比如我有10000个设备要通知,我遵循的逻辑是 我正在浏览10000台设备并致电apns提供商 1.为什么采用这种for-loop方法 我必须在我的mongodb集合中存储每个通知细节,所以我采用了这种方法 问题是某些设备接收到通知,但太晚了(第二天) 我也读了链接 说apns会拒绝 上述方法是否正确,是否也可以通过任何方式使所

我的应用程序堆栈是ios(前端)和node.js(后端)。我必须向设备发送通知。在my node.js部分,我使用apns模块发送通知,工作正常

现在我必须发送大量通知,比如我有10000个设备要通知,我遵循的逻辑是

我正在浏览10000台设备并致电apns提供商

1.为什么采用这种for-loop方法

我必须在我的mongodb集合中存储每个通知细节,所以我采用了这种方法

问题是某些设备接收到通知,但太晚了(第二天)

我也读了链接 说apns会拒绝

上述方法是否正确,是否也可以通过任何方式使所有通知传递者都能收到通知


请分享你的想法。提前感谢。

如果您需要在发送之前/之后处理每个通知,我建议您对循环进行设计更改,并让您查看

使用此设计模式,您可以将这些通知推送到队列/消息传递系统中,并让工作人员从队列中提取并处理(通过APN发送并写入mongo)通知,而不是仅通过APN循环通知和发送。这种设计的好处在于,随着应用程序的增长,您可以添加更多的工作人员来处理增加的负载,而无需重写应用程序/体系结构。一旦建成,它可能看起来像这样:


我个人使用我的工作队列,但这个决定是你需要自己研究的。例如,如果您不想管理消息传递系统,您可以查看类似的内容。

我认为通过10000个设备ID循环并调用APNS提供商不是正确的前进方向。这里的文档严格要求重复使用apn.Provider,而不是每次都重新创建它以获得最佳性能

如果您使用设备id数组(而不仅仅是设备id)发送通知,那么您将收到APN的响应,其中提及每个设备的所有详细信息