heartbeat isnt used to complete the connection, its used for a continuous connection just to keep it alive, you are looking for timeout=3000, you dont 'need' to use eventsource, although it is nicer
On 11 December 2014 at 10:38, Mike Marino <[email protected]> wrote: > > Hi Garren, > > Your Ajax call won't return any data until it has finished/succeeded. This > doesn't play well with the changes feed, which keeps the connection open > and is streaming data. > > Can you use the eventsource protocol instead? (If not, see [1].) This > built-in library does a lot of the work for you so you don't have to worry > about manually reconnecting, etc. See > > https://couchdb.readthedocs.org/en/1536-feature_add-docs/changes.html#event-source > > [1] Older versions of CouchDB don't support eventsource. We had to update > our code e.g. to run on Cloudant (they don't yet support this protocol for > the changes feed) and came up with a hack solution, which attaches a > progress listener to the underlying XMLHttpRequest in the ajax call. This > is not ideal for a few reasons, one being that there is no way to clear the > incoming buffer even after the changes are consumed. If you are interested > here and this is the route you want to go, I can send you the code. > > Cheers, > Mike > > On Thu, Dec 11, 2014 at 10:27 AM, Garren Smith <[email protected]> wrote: > > > Hi All, > > > > I’m having an issue with monitoring the changes feed of a database on > > Couchdb 1.6. I’m using jQuery to monitor the changes feed of a database. > > I’ve set it to feed type to longpoll and I’ve set a hearbeat of 3 > seconds. > > I want the request to return after 3 seconds if no changes happened on > the > > document. This works perfectly via curl using this: > > > > curl ' > > > http://127.0.0.1:5984/MY_DB/_changes?feed=longpoll&since=now&heartbeat=3000&include_docs=true > ' > > < > > > http://127.0.0.1:5984/MY_DB/_changes?feed=longpoll&since=now&heartbeat=3000&include_docs=true > > '> > > > > But if I try and do the exact same via jQuery it never returns. Any ideas > > on why it doesn’t and what I’m doing wrong? Here are steps to reproduce > > with jQuery: > > > > Ppen fauxton in browser: http://localhost:5984/_utils/fauxton/ < > > http://localhost:5984/_utils/fauxton/> > > Open the dev console. > > Run this code snippet: > > > > function longpoll(last_seq) { > > var query = $.param({ > > since: last_seq || "now", > > include_docs: true, > > feed: 'longpoll', > > heartbeat: 3000 > > }); > > > > console.log('query ' + query); > > var promise = $.get('/qa_multi_1/_changes?' + query); > > promise.then(function (resp) { > > var parsedResp = JSON.parse(resp), > > results = parsedResp.results, > > last_seq = parsedResp.last_seq; > > > > console.log('changes', resp, parsedResp); > > > > longpoll(last_seq); > > }); > > } > > longpoll("now"); > > > > > > Any help greatly appreciated > > Garren >
