#python #angular #google-cloud-platform #google-cloud-pubsub
#python #angular #google-облачная платформа #google-cloud-pubsub
Вопрос:
Я могу отправлять сообщения из серверной части Python (которая находится на экземпляре виртуальной машины) в тему и просматривать сообщения в пабе / подтеме. Но нет кода для извлечения данных из темы с использованием angular. Я хочу извлечь эти данные и показать их в Angular UI. Не могли бы вы, пожалуйста, помочь мне с этим?
Комментарии:
1. В документах для node JS есть раздел: cloud.google.com/pubsub/docs/quickstart-client-libraries
Ответ №1:
В PubSub есть 2 режима подписки, которые подразумевают 2 вида аутентификации:
- Push-подписка, при которой отправитель (подписка на PubSub) должен пройти проверку подлинности, чтобы отправить сообщение в безопасную конечную точку
- Извлекать подписку, где клиент должен пройти проверку подлинности, чтобы иметь возможность получать сообщения.
Итак, в вашем случае вам необходимо аутентифицировать ваше приложение Angular в PubSub Pull Subscription, чтобы иметь возможность читать сообщения. У вас есть 2 решения:
- Либо вы создаете файл ключа учетной записи службы и помещаете его в свой статический код. Очевидно, что это глупая идея, потому что вы публично делитесь секретом, и, следовательно, это похоже на отсутствие безопасности!
- Или, поскольку предыдущее решение похоже на отсутствие безопасности, вы можете сделать подписку на получение общедоступной. Предоставьте
allUsers
в качестве подписчика PubSub.
Это будет работать, но есть проблема с дизайном: любой сможет подписаться на вашу подписку на получение, а поскольку сообщения не дублируются между подписчиками, вы потенциально потеряете сообщения.
Лучшим решением может быть обслуживание конечной точки в потоковой передаче, например, с помощью Cloud Run, для аутентификации вашего пользователя на конечной точке Cloud Run и для потоковой передачи сообщений из подписки PubSub pull через потоковое подключение Cloud Run.
Таким образом, вы добавляете уровень безопасности, что-то вроде прокси.