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

Reply via email to