亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

您如何在水平擴展的應用程序上管理 websocket?

您如何在水平擴展的應用程序上管理 websocket?

Go
呼如林 2022-06-21 16:18:58
我有一個用 Golang 編寫的應用程序,托管在 Google App Engine 上并使用 Firestore 作為后端。Google App Engine 水平擴展。我使用 Firebase 后端發送 websocket 消息。因此,用戶連接到哪個 App Engine 實例并不重要。每次用戶進行身份驗證時,都會創建一個 websocket 并提供在線用戶列表。在 Firestore 中,我只是將該用戶的套接字連接時標記為“活動”,而當其斷開連接時將該用戶標記為“非活動”。我的問題是應用程序崩潰(它發生了,即使它沒有發生,我也需要為此做好計劃。)所有通過 Web 套接字連接到 Go Server 的用戶仍被標記為活動狀態。Web 客戶端未連接到 Firebase。僅適用于 Go 服務器。當應用程序啟動時,我無法將所有用戶標記為非活動狀態。因為 App Engine 加載更多實例可能會啟動多個應用程序。如果我這樣做了,在線的用戶會因為負載而被新實例啟動標記為離線。如何解決這樣的問題?
查看完整描述

2 回答

?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

您的問題尚不清楚,但聽起來您希望客戶端應用程序可以根據套接字的連接來管理活動狀態。這根本行不通,部分原因是您在這里的觀察,還因為如果客戶端完全失去連接,它也將無法更新后端的狀態。

您應該從后端的角度使用 websocket 管理連接狀態。它永遠不應該失去連接。(事實上,這就是實時數據庫管理其存在的方式。)


查看完整回答
反對 回復 2022-06-21
?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

有一種方法可以通過在中間有一個監控服務器(app-[monitor]-firebase)定期監控應用程序的狀態來更新數據庫。



查看完整回答
反對 回復 2022-06-21
  • 2 回答
  • 0 關注
  • 179 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號