AWS-SNS и Node.js: подписка нескольких конечных точек (ARN) на тему

Я создаю приложение чата для Android с помощью сервера Node.js ..
Когда пользователь хочет открыть новую тему / чат-группу, необходимо сделать несколько вещей:
1. Создайте тему с помощью Amazon (AWS) SNS SDK.
2. Подпишитесь на каждого из запрошенных пользователей в этом разделе, используя их АРН AWS Endpoint.

Мой вопрос касается Node.js AWS SDK, но он соответствует API AWS для Android, так как в настоящее время они работают одинаково в этом вопросе.

Вопрос 1:
Как подписаться на несколько оконечных ARN за один вызов?
В настоящее время мне приходится ждать после каждого «запроса подписки», чтобы убедиться, что он успешен, прежде чем я отправлю следующий. . На это уходит слишком много времени и сил.

Вопрос 2:
Если пользователь хочет отказаться от подписки на все приложение, я удаляю его / ее конечную точку из AWS-SNS.
НО, их подписки на различные темы остаются! Таким образом, они по-прежнему получают все данные / сообщения (и, конечно, нет приложения для их получения).

Пожалуйста, дайте мне знать, нужен ли какой-либо код.
* Я подумал, может быть, я просто поставлю json'd List со всеми ARN, но это не сработало.


person guy_m    schedule 30.01.2014    source источник


Ответы (1)


В настоящее время AWS SDK не поддерживает массив Arns.

AWS-SDK / sns.subscribe

Возможное решение - использовать массив запросов, но это действие ограничивается 100 транзакциями в секунду (TPS) в соответствии с документацией AWS. Вот пример вызовов API Node.js.

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)
    }
}
person Colin Wang    schedule 13.10.2020