2011-07-02 20 views
1

在閱讀了類似的問題here之後,我很好奇這是否完全可能?CouchDB - 使用jQuery的連續提要

我明白我可以通過包裝在一個setInterval函數中重複調用check-for-changes函數來完成下面的工作,但我更願意使用連續輪詢。

數據庫經常被更新在高峯時期每分鐘,但似乎是一種浪費,以保持輪詢在非高峯時間數據庫...

$.getJSON('http://localhost:5984/db?callback=?', function(db) { 
    console.log(db.update_seq); 
    $.getJSON('http://localhost:5984/db/_changes?since='+db.update_seq+'&feed=continuous&callback=?', function(changes) { 
     console.log(changes); 
    }); 
}); 

螢火顯示了當變化的確取得了,有事,但只返回null。

我也是在同一個域,從本地主機調用頁/ index.php的

+1

我不是100%確定的,但是我認爲原始的XHR API確實允許與COMET風格的更新進行長時間連接;但是爲了簡單起見,jQuery並沒有公開這個。使用jQuery,有一個完整的查詢和完整的響應,沒有流。如果我是正確的,我很樂意看到一個jQuery插件來解決這個問題,因爲我也想要它! – JasonSmith

+0

@jhs,在那裏必須與你同意!我記得前一段時間正在研究這個問題,並且必須解決我目前的方法(setInterval/long-polling)。讓我知道如果你發現任何東西! :) – crawf

回答

2

而不是使用連續或長輪詢,可以轉而採用自適應策略。也許從1分鐘開始。如果沒有更新,則增加到2分鐘,然後是3,4,5等。如果有更新,則可以修改間隔以反映直到下一次預期更新的時間。

基本上,這一切都歸結爲它對你實際獲得近實時更新通知以及你願意處理多大的延遲有多重要。

+0

謝謝!即時通訊目前正在爲我的解決方案做些什麼。我想我總是感覺有點緊張,使用setInterval ... – crawf