pubsub 是否适合客户端桌面应用程序使用?

Is pubsub suitable to be used by client desktop applications?

如果我要创建客户端桌面应用程序,我会尝试找到一种可靠的方法来通知客户端应用程序需要从服务器查询的新数据。 pubsub 对此有好处吗?我看到的大多数文档似乎都集中在服务器到服务器的通信上,并且对于服务器到客户端的通知是否适用,这有点模棱两可。

如果它应该工作,我是否能够正确验证订阅者以限制他们可以订阅的主题?任何人都可以下载此应用程序,我需要确保供一个客户使用的信息不会落入另一个客户的手中。

如果您想向互联网上的任何人开放该应用程序,您不能依赖仅适用于 Google 身份的 IAM 服务 -> 您不能要求您的用户拥有 Google账号,用户体验会很差

因此,您不能使用 IAM 服务来保护 PubSub 访问,因此不能使用 PubSub,因为任何人都可以访问它。

在您的用例中,第一步是要求用户注册(创建帐户、验证电子邮件、可能使用付款方式等)。然后,您拥有一个身份,但由您管理,而不是由 IAM 管理。您知道哪些消息是给这个用户的,哪些不是。

如果你想得到“实时”的通知,我建议你使用长轮询的方式或者流式推送数据给用户。 Cloud Run is now capable 执行此操作,我建议您看一下。

云 Pub/Sub 不是这个用例的好选择。首先请注意,每个主题和项目仅限 10,000 个订阅。因此,如果您打算拥有更多,您将 运行 订阅不足。其次,请注意订阅仅接收订阅创建后发布的消息。如果您只需要传递在用户访问该网站后发布的消息,这可能没问题。但是,结合这两个问题,您需要考虑订阅的生命周期。当用户注销时它们会被删除吗?如果没有,当用户回来时,您是否希望他们获得自上次访问以来发布的所有消息?

此外,正如评论中所讨论的,存在身份验证问题。您的客户端应用程序必须具有订阅凭据。这将要求您基本上将这些凭据泄露到您的客户端代码中,这可能是您的应用程序中的一个漏洞。

旨在传递这种性质的通知的服务是 Firebase Cloud Messaging