Подписаться на список групповых / приватных чатов в AWS AppSync - PullRequest
0 голосов
/ 10 сентября 2018

В настоящее время я оцениваю AWS AppSync как серверное решение для приложения обмена сообщениями.

У пользователей будет возможность просматривать новые группы чатов и другое представление, в котором они видят список своих присоединившихся и приватных чатов (в списке должны отображаться имя и последнее сообщение чатов). Каждый чат, конечно, будет иметь подробный вид, где отображаются все сообщения.

Вопрос в том, как оформить подписную часть. Моя мутация для отправки сообщения будет выглядеть примерно так:

createMessage( content: String, conversationId: ID!, createdAt: String!, id: ID! ): Message

Согласно документации по подписке, у меня есть только две возможности для оформления моей подписки. Либо я подписываюсь на все новые сообщения, либо на все новые сообщения из определенного разговора, используя идентификатор разговора в качестве аргумента. Так что в моем случае мне нужно было бы получить все пользовательские разговоры, а затем сделать вызов по подписке для каждого разговора. Почему-то это похоже на проблему, но я не вижу другого пути (например, пользовательская фильтрация в настоящее время невозможна (по этой ссылке) )

Есть ли лучший способ подписаться на новые сообщения для определенного подмножества сообщений (только в разговорах, на которые я подписан)? Возможно ли наличие 100 активных подписок на клиенте?

Заранее спасибо Лука

1 Ответ

0 голосов
/ 10 сентября 2018

Вы правы. Только два способа сделать это из коробки:

  1. Подписаться на каждый разговор, используя аргумент.
  2. Подписаться на все разговоры и фильтровать сообщения на клиенте.

Если вы подписываетесь на каждый разговор с помощью аргумента (опция # 1), вы можете отправлять запросы на подписку в одном HTTP-запросе. Например. Отправьте до 50 подписок с разными аргументами разговора в одном запросе.

Существует третий вариант, где вы можете выполнять больше работы для обеспечения эффективности клиента. Эта опция включает настройку обратного индекса разговоров с клиентом.

  1. Создайте индекс, где вы можете найти клиентов по данному разговору. Клиент сделает одну подписку с одним аргументом (вероятно, идентификатор клиента). Когда вы публикуете сообщения, у вас есть промежуточный шаг (вероятно, задание backend, которое подписано на все сообщения), где вы просматриваете индекс, чтобы определить, какие клиенты заинтересованы в разговоре, для которого вы публикуете сообщение. Затем опубликуйте для каждого клиента.
...