continuous mode isn't supported by all browsers. - benoit
On Thu, Apr 18, 2013 at 7:28 AM, Stephen Bartell <[email protected]> wrote: > Thanks for the summary Robert. That clears it all up :) > > Ok so now I'm going to risk looking like a tool. Besides the underlying > mechanism, what is the difference between eventsource and continuous? In > other words, what does ES bring to the table that continuous does not? I was > originally excited about event source because for some reason i had it in my > head that multiple event source subscriptions would use the same connection, > thus circumventing the open connection limits on browsers. > > Best > Stephen > > On Apr 17, 2013, at 4:31 AM, Robert Newson <[email protected]> wrote: > >> Setting timeout and heartbeat to the same value is going to lead to >> exactly what you're seeing. >> >> The timeout setting is how long, without an event, the connection will >> stay open. >> >> The heartbeat setting is how long to wait, without an event, before >> sending a newline character to keep the connection from timing out. >> >> What you're seeing is that the timeout happens before the heartbeat, >> since both are happening approximately simultaneously. >> >> Just set heartbeat=5000 and rely on the timeout default of 1 minute, >> or specify timeout to whatever multiple of heartbeat you find useful >> (as long as it's more than one). >> >> Summary: timeout == heartbeat is not going to keep the connection alive. >> >> B. >> >> >> >> >> >> On 17 April 2013 10:29, Stephen Bartell <[email protected]> wrote: >>> Ok heres a test script. Have a couch serving localhost:5984 in admin party >>> mode. >>> >>> git clone https://github.com/snbartell/couch-es-test.git >>> cd couch-es-test >>> npm install >>> node index.js >>> >>> My theory of a second source crashing couch was wrong. >>> >>> I think I know whats going on. My script above acts just like the browser >>> does. When the `timeou`t is reached and `heartbeat` !== `timeout`, the >>> EventSource module (whether its the browser or the node package) will >>> restart the feed. This is why every `timeout` ms the feed __appears__ to >>> by dumping all the docs since `since`. >>> >>> curling works fine. Try this after running the above script and leaving the >>> test db in place. I expect this behavior. >>> curl >>> "http://localhost:5984/source1/_changes?since=2&feed=continuous&timeout=5000&heartbeat=5000" >>> >>> So then it comes to using this in Chrome console. If you go to the couch >>> you ran the script against, open the console, and paste the following: >>> var source1 = new >>> EventSource('/source1/_changes?feed=eventsource&timeout=5000&heartbeat=5000') >>> >>> Watch the Network panel. It looks like EventSource does not pass the query >>> params. I'm probably being an idiot and not calling it correctly. I >>> googled around and couldn't find the api. Does someone have a link? >>> >>> Still though, if I call EventSource without `timeout` and `heartbeat`, then >>> couchdb will use the defaults of 60000 each. Then, with `timeout` === >>> `heartbeat`, the connection should be kept alive, right? >>> >>> Thanks guys, >>> >>> Stephen >>> >>> >>> On Apr 16, 2013, at 11:17 PM, Stephen Bartell <[email protected]> wrote: >>> >>>> >>>> On Apr 16, 2013, at 11:13 PM, Benoit Chesneau <[email protected]> wrote: >>>> >>>>> On Wed, Apr 17, 2013 at 7:55 AM, Stephen Bartell <[email protected]> >>>>> wrote: >>>>>> >>>>>> But for what I was doing, no, I wasn't specifying since. I would expect >>>>>> the fundamentals to be the same as well. What I was see is that even >>>>>> without `since` given, no changes would come through until that second >>>>>> source was added. Once the second source is added, then all sources >>>>>> periodically dump. >>>>>> >>>>> >>>>> Hi Stephen, >>>>> >>>>> Can you provide a clear way to reproduce what you're doing and the >>>>> result you're expecting. It's not clear for me right now if you : >>>> >>>> Yep, Im actually working on it now :) >>>> >>>>> >>>>> 1. the reauest results when giving the since parameter without any >>>>> changes , did you try using curl? >>>> no. I only did it from the browser console. >>>> >>>>> 2. If it's a javascript error >>>> nope. its a couch thing. >>>> >>>>> 3. ? >>>>> >>>>> - benoit >>>> >>> >
