![](/img/trans.png)
[英]How to use Firebase with a linux based client app for bidirectional messages communication with server
[英]How to architect a django app that requires bidirectional communication with the client
我有一個通過互聯網(完全獨立的網絡)連接的webapp(django / node.js)和一個客戶端(不是瀏覽器,一個使用請求包的控制台應用)。 預期客戶端將不會一直存活,而是會通過不可靠的Internet連接連接到Internet。
我需要一些有關架構應用程序的建議,並且系統應該執行以下操作:
我需要能夠將數據從服務器推送到客戶端,並且發生這種情況時,客戶端將根據收到的數據更新其本地MSSQL數據庫,並向服務器確認數據更新成功(即雙向通信) )
服務器還可以詢問客戶端是否還活着...。客戶端將響應,如果它還活着,並且用作監視狀態客戶端的心跳。 如果它仍然存在,則服務器可以要求客戶端啟動一個較長的過程(例如,開始備份其數據庫並上傳)。 如果客戶端沒有響應,則會發生某種超時,並且將發送一封電子郵件,指出服務器無法訪問客戶端。
這里有一些限制:
我曾嘗試將服務器端事件推送到客戶端,然后客戶端發布以響應其網址。 第一個問題是客戶端只是在等待事件時客戶端會消耗處理器的周期(即使我嘗試使用chrome或firefox之類的瀏覽器,也會遇到相同的問題-在等待時,處理器使用率會上升8%左右)或者)。 另一個問題是,從服務器啟動ARE_YOU_ALIVE的代碼將停滯,客戶端將發布到其他位置/視圖,我必須獲取該信息。 看起來像一場災難正在等待發生。 因此,這種方法被放棄了。
我真的不想使用龍卷風,扭曲等等。現在真的不想在此花費時間。 我的大多數應用程序運行良好,並且不想為這種小功能重新發明輪子。
我堅信正確的方法涉及node.js和socketio,並希望使用它們。 同時,我不是JS忍者,並且想讓django來做繁重的工作。 我喜歡本文解決問題的方式 ,並且具有最少的node.js,並讓django處理邏輯。 但是,問題似乎是node_api(request)
(客戶端將在其上發布其響應的位置)將不知道客戶端正在響應哪個ARE_YOU_ALIVE請求。 我真的需要一些簡單的東西,例如:
client_alive = Get_client_status(client) if client_alive: send_command_to_client(command['INIT_BACKUP'] response = Get_client_status(client)
block until response.state == "BACKUP_COMPLETE": response = Get_client_status(client) # need to handle timeout if backup is stuck and will not complete for some reason
else: timeout? send_email_client_dead()
人們通常如何處理這種情況是否存在已知模式? 我覺得我在做一些新的事情,但是還沒有遇到任何有關如何完成此工作的文檔。 我將不勝感激。 我建議在這里考慮使用HTTP的幾種選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.