2012-01-10 49 views
1

項目:需要1-1私人聊天的應用程序。
當前的系統:在應用程序的當前登錄系統使用爲用戶在保持登錄一個cookie系統
1-1使用PHP/MySQL的聊天系統

我明白如何實現聊天系統(我剛剛看了一下彗星,並且以後可能會實現它,但現在,我打算使用基本的AJAX使用計時器);在聊天過程中聊天將存儲在文本/ XML文件中,並且一旦完成,它將被存檔到數據庫中。當聊天開始時,文件名將被存儲在數據庫中,並且一旦被檢索,將被存儲爲cookie(除了聊天開始和結束時,數據庫將保持不變)。

問題:用戶不能與其他用戶開始對話,除非他們都在線。如何設計系統,以便只有在兩個用戶都在線時才能開始聊天?
我並不需要特定的代碼,只是使其工作的邏輯。

+0

用戶只會通過點擊鏈接發起聊天..只顯示他的在線人的鏈接...保存用戶在數據庫中的狀態並通過超時上傳您的在線人員列表。 – 2012-01-10 16:44:53

回答

1

當用戶登錄您的站點並保持您每5秒發送一次ajax ping到服務器,並且服務器將更新ping時間。 因此,您可以列出正在查看的在線人員,如果ping時間大於5秒,這意味着您的用戶已註銷或關閉瀏覽器。

此外,您還可以使用瀏覽器焦點事件使用相同機制完成離開狀態。

+0

5秒鐘可能是一個有點太短我認爲...它可能會導致服務器負載,假設將有很多用戶。 – 2012-01-10 17:04:02

3

假設你正在登錄的用戶活動:

只允許用戶接收聊天如果接收器已經在超過30秒顯示出活性。如果沒有,則顯示用戶不在線和/或忽略發送的消息的錯誤消息。

3

對於無狀態系統,您可以決定誰在線和不在線的唯一方法是使用超時。你提到使用AJAX和一個定時器,所以如果最後一個用戶活動比較舊,那麼最後一次AJAX刷新(加上刷新時間),那麼它們不在線。您需要確保聊天啓動頁面啓動活動更新。