【发布时间】:2020-11-25 03:50:40
【问题描述】:
我有一个用 Golang 编写的应用程序,托管在 Google App Engine 上并使用 Firestore 作为后端。
Google App Engine 水平缩放。
我使用 Firebase 后端发送 websocket 消息。因此,用户连接到哪个 App Engine 实例并不重要。
每次用户进行身份验证时,都会创建一个 websocket 并提供在线用户列表。
在 Firestore 中,我只是将该用户的套接字连接时标记为“活动”,而当其断开连接时将其标记为“非活动”。
我的问题是应用程序崩溃(它发生了,即使它没有发生,我也需要为此做好计划。)所有通过 Web 套接字连接到 Go Server 的用户仍被标记为活跃。
网络客户端未连接到 Firebase。仅限 Go 服务器。
我无法在应用启动时将所有用户标记为非活动状态。因为 App Engine 加载更多实例可能会启动多个应用程序。如果我这样做了,在线的用户会因为负载而在新实例启动时被标记为离线。
如何解决此类问题?
【问题讨论】:
-
更新了我的问题,以更清楚地说明 Web 客户端通过 Web 套接字连接。 Go 连接到 Firestore。 Web 客户端未连接到 Firestore。
标签: firebase go firebase-realtime-database google-cloud-firestore