2015-04-05 46 views
0

我正在構建一個直播應用程序。如果他/她在線,用戶可以呼叫另一個用戶。當用戶登錄時,我可以註冊日誌。不過,我正在尋找一種方法來檢查用戶是否退出應用程序。任何建議都是值得歡迎的。檢查用戶是否在Flask中在線

+0

我認爲這應該被標記爲[tag:flask]而不是[tag:flash]?或者你是否同時使用? – GoBusto 2015-04-05 08:01:28

+0

@GoBusto謝謝你指點我。這是一個* auto *錯誤。 – Dewsworld 2015-04-05 08:16:47

回答

1

1)你可以實現一個心跳系統,其中在線用戶發送消息給對方,以確保他們還活着

2)如果退出你的意思是用戶選擇指定的「退出」按鈕,然後你可以只發送給其他用戶的響應說你已經退出

我敢肯定有很多更多的方法來做到這一點,但這些都是我在分佈式系統中的課程學到的兩種方式

0

爲了做到這一點,您需要在登錄時爲每個用戶使用異步連接。請查看Tornadi這比燒瓶更適合這種應用。但是如果你堅持使用燒瓶,你必須找出一種方法來實現使用Tornado的系統的異步部分,並使其與Flask共存。如果您不想使用Tornado,您也可以使用Python's asyncio module,但是您必須從頭開始創建所有內容,這在大多數情況下並不理想。

0

我認爲這取決於您的應用程序上下文中「註銷」的定義。正如user1736436所說,如果這只是他們點擊「註銷」按鈕的問題,那很簡單。當然,如果用戶上網停止,或者瀏覽器崩潰,你就不會知道。

如果您正在使用其他一些實時連接,例如websockets,您可以將其定義爲該套接字是否打開。 Websocket實現通常具有某種可以在服務器端讀取的狀態屬性(例如,gevent-websocket套接字具有可檢查的布爾屬性.closed)

如果您使用心跳線路,最終在Javascript中使用setInterval回調觸發它,並在服務器上編寫某種定時進程,以便在一段時間內沒有得到某個動作時採取一些行動。