2013-04-17 75 views
2

我即將寫一個基於Ajax的聊天。 什麼是刷新聊天框的最佳方式?我知道有很少的可能性,但最適合聊天?AJAX聊天沒有定期刷新?

附加信息: 是否有可能只是重新加載未讀文本?如果有人寫文本,刷新整個內容並不是必需的。新的消息就足夠了。但是可以用ajax和php來完成嗎?我不知道該怎麼辦。所以我會很感激即使是一個tipp ... 謝謝!

+3

有喜歡的網絡插口,可避免輪詢技術,但他們是相當複雜的,可能不值得開發開銷。 當然 - 只需發送一個時間戳,每個輪詢都對應於上次輪詢的時間戳。服務器只能使用比包含的時間戳更新的消息進行響應。 – sidoh

+0

這個問題相當廣泛。我建議研究AJAX,然後縮小你的問題。另外,尋找可以使用的預製聊天模塊也無妨。 – showdev

回答

1

刷新頻率和刷新內容的範圍是獨立的。使用AJAX,您可以詢問服務器是否有新消息到達(基於時間戳),並且僅將這些消息附加到已顯示的內容,您不必重新加載整個頁面。至於「週期性刷新」的事情:你可以選擇短輪詢或長輪詢。我認爲通過「定期刷新」你可以參考短輪詢。這基本上是一個計時器,例如在每秒鐘服務器被JavaScript輪詢是否有任何新的數據要顯示。如果是,則發送它,否則回覆消息,指示沒有新內容。

在長輪詢期間,服務器被輪詢,並且如果有的話就給出新的內容。但是,如果沒有新的內容,那麼不要立即給出「無新內容」的答案,而是保持連接打開,並在需要發送內容時作出回答。這可以通過幾種不同的方式來實現,理論上可以提供更好的響應時間,但實際上,如果以某種方式實現,可能會導致服務器超時或重複使用資源。

這裏你可以看到一個長輪詢例如:http://www.screenr.com/SNH