3

我正在處理聊天應用程序電報。用戶應該看到他/她的朋友可用性(在線/離線)。我搜查了很多,發現服務器必須發送ping到設備和設備回覆回。但我認爲它可以防止應用程序優化使用服務器和設備資源。你假設有一百萬用戶,每個間隔有很多ping,很多設備電池和帶寬使用等等。什麼是最佳approuch來檢查服務器的可用性設備

我還研究了Firebase和GCM。他們檢查設備的可用性,向他們發送消息,但我無法用它來顯示給用戶。

我真的對Telegram用於用戶可用性的技術感興趣。

請讓我找到一個最佳的方式。 謝謝

+3

我認爲[this](https://firebase.googleblog.com/2013/06/how-to-build-presence-system.html)正是您正在尋找的。 –

+0

@AndréKool謝謝,這真的很有用。如果在我自己的服務器上實現它,你有任何想法嗎? –

+0

關於您現在已刪除的問題,請查看'dmesg'以查看Apache是​​否由於缺乏內存而被系統殺死。你也可以做'ps aux | grep httpd'來查看Apache是​​否仍在運行(我認爲Centos使用「httpd」而不是「apache」)。 – halfer

回答

2

如果你看看the blog post @Andre linked,你會發現Firebase的官方方法是在Firebase的實時數據庫中存儲一個值,表示用戶的狀態。因此,邏輯是這樣的:

  • 使用的數據庫中的屬性來跟蹤用戶的狀態(如/用戶/ {UID} /狀態)
  • 當您在用戶登錄他們的狀態設置爲「在線」
  • 當用戶註銷/將應用程序置於後臺/閒置狀態時,可以更改該「狀態」屬性的值(例如,更改爲「脫機」(使用.onDisconnect()方法,如博文中所示)

現在,無論何時您獲取該狀態的值,它都將始終反映用戶的在線/離線狀態而不依賴於o當時用戶實際上網。

如果你想向用戶展示他們所有朋友的狀態,你只需循環訪問他們朋友的uid列表並獲取每個朋友的相關狀態。所有的信息/代碼似乎是in that blog post

+0

哦,謝謝@詹姆斯;我可以使用哪些獨立於Firebase的常用方法?我的意思是我可以在我的服務器上使用它? –

+0

@MustafaMohammadi我不知道我明白。你爲什麼不想使用Firebase? – James

+0

其實我試圖讓家庭遇到問題和解決方案。 Firebase真的是一個很棒的服務器,每件事情都已經準備就緒,我認爲這讓我變得懶惰。你怎麼看?謝謝 –

相關問題