gpt4 book ai didi

firebase - 您如何在水平扩展的应用程序上管理 websockets?

转载 作者:行者123 更新时间:2023-12-01 19:49:19 24 4
gpt4 key购买 nike

我有一个用 Golang 编写的应用程序,托管在 Google App Engine 上并使用 Firestore 作为后端。

Google App Engine 水平扩展。

我使用 Firebase 后端发送 websocket 消息。因此,用户连接到哪个 App Engine 实例并不重要。

每次用户进行身份验证时,都会创建一个 websocket 并提供在线用户列表。

在 Firestore 中,我只是在用户的套接字连接时将其标记为“事件”,在断开连接时将其标记为“非事件”。

我的问题是应用程序崩溃(它发生了,即使它没有,我需要为此做好计划。)所有通过网络套接字连接到 Go Server 的用户仍然被标记为活跃。

Web 客户端未连接到 Firebase。只到 Go 服务器。

我无法在应用程序启动时将所有用户标记为不活动。因为 App Engine 加载更多实例可能会启动多个应用程序。如果我这样做,在线用户将被由于负载而启动的新实例标记为离线。

如何解决此类问题?

最佳答案

您的问题并不清楚,但听起来您希望客户端应用程序可以根据套接字的连接来管理事件状态。这根本行不通,部分原因是您在这里的观察,还因为如果客户端完全失去连接,它也将无法更新后端的状态。

您应该从后端的角度使用 websocket 管理连接状态。它不应该失去连接。 (实际上,这就是实时数据库管理其 presence 的方式。)

关于firebase - 您如何在水平扩展的应用程序上管理 websockets?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63257222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com