【问题标题】:AWS-SNS and Node.js: subscribe multiple Endpoints (ARNs) to a TopicAWS-SNS 和 Node.js:将多个终端节点 (ARN) 订阅到一个主题
【发布时间】:2014-02-23 05:26:45
【问题描述】:

我正在使用 Node.js 服务器为 Android 构建一个聊天应用程序..
当用户想要打开一个新的主题/聊天组时,需要做的事情很少:
1. 使用亚马逊 (AWS) SNS SDK 创建主题。
2. 使用他们的 AWS 终端节点 ARN 为每个请求的用户订阅此主题。

我的问题是关于 Node.js AWS SDK,但对应于 AWS Android API 以及它们目前在这个问题上的工作方式相同。

问题 1:
如何在一次通话中订阅多个端点 ARN?
目前,我必须在每个“订阅请求”之后等待以确保它成功,然后再提交下一个。这需要太多时间和精力。

问题 2:
如果用户想要取消订阅整个应用程序,我会从 AWS-SNS 中删除他/她的 Endpoint。
但是,他们对各种主题的订阅仍然存在!如此有效,他们仍然接收所有数据/消息(当然没有应用程序接收它)。

如果需要任何代码,请告诉我。
* 我想也许我会放一个包含所有 ARN 的 json 列表,但它不起作用。

【问题讨论】:

    标签: android node.js amazon-web-services amazon-sns


    【解决方案1】:

    目前 AWS SDK 不接受 Arns 数组。

    AWS-SDK/sns.subscribe

    可能的解决方案是使用批量请求数组,但根据 AWS 文档,此操作被限制为每秒 100 个事务 (TPS)。 这是 Node.js API 调用的示例。

    const subscribe = async (TopicArn, arns) => {
        try {
            const promises = []
            arns.forEach((Endpoint) => {
                promises.push(sns.subscribe({
                    Protocol: 'application',
                    TopicArn,
                    Endpoint,
                }).promise())
            })
            await Promise.all(promises)
        } catch (e) {
            console.error(e)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-06-27
      • 1970-01-01
      • 2015-01-14
      • 1970-01-01
      • 1970-01-01
      • 2022-11-20
      • 1970-01-01
      • 2019-11-30
      • 2016-04-03
      相关资源
      最近更新 更多