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
>>> 
>> 

Reply via email to