couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From gdamjan <...@git.apache.org>
Subject [GitHub] couchdb pull request: Send a real EventSource event for heartbeat
Date Sat, 03 May 2014 17:16:08 GMT
GitHub user gdamjan opened a pull request:

    https://github.com/apache/couchdb/pull/222

    Send a real EventSource event for heartbeat

    The EventSource connection can get stuck (in TCP half-open state*) and there's no way
    for the client to detect that. This commit changes the way heartbeat is sent, instead
of
    sending a newline character, it sends an empty event of type heartbeat:
    
        event: heartbeat
        data:
    
    This event doesn't have an id: field, so the client will retain its latest Last-Event-ID
state.
    
    This doesn't change the expectations of clients that used EventSource till now, because
they
    subscribe to the 'message' event type. To get the 'heartbeat' events a client will need
to
    explicitly subscribe to it:
    
        source.addEventListener('heartbeat', function () { /* cancel a timer that would otherwise
reconnect the source */ });
    
    * this can happen when you suspend your laptop, on flaky internet connection, ADSL reconnect,
    bad wifi signals, bad routers etc. Pretty often in a typical internet usage nowadays.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/gdamjan/couchdb master

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/couchdb/pull/222.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #222
    
----
commit a3de553727e35b5ac8f22c0768f2aa6c08ad4654
Author: Damjan Georgievski <gdamjan@gmail.com>
Date:   2014-05-02T15:04:41Z

    Send a real EventSource event for heartbeat
    
    The EventSource connection can get stuck (in TCP half-open state*) and there's no way
    for the client to detect that. This commit changes the way heartbeat is sent, instead
of
    sending a newline character, it sends an empty event of type heartbeat:
    
        event: heartbeat
        data:
    
    This event doesn't have an id: field, so the client will retain its latest Last-Event-ID
state.
    
    This doesn't change the expectations of clients that used EventSource till now, because
they
    subscribe to the 'message' event type. To get the 'heartbeat' events a client will need
to
    explicitly subscribe to it:
    
        source.addEventListener('heartbeat', function () { /* cancel a timer that would otherwise
reconnect the source */ });
    
    * this can happen when you suspend your laptop, on flaky internet connection, ADSL reconnect,
    bad wifi signals, bad routers etc. Pretty often in a typical internet usage nowadays.

----


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

Mime
View raw message