On 10-12-13 23:46, Justin Karneges wrote:

Hi Justin,

> I'm curious, what's the rationale for the flip-flopping design? It seems
> to me that we could have just used a long-polling loop for receiving
> data, and then a normal request/response whenever we need to send data.
> Not suggesting a change or anything, just wondering why the protocol
> works the way it does.

I was never part of the decision for flip-flopping, so I don't know what
the original designer had in mind. But I can share my experience with
long-polling versus BOSH.

When I jumped into the HelpIM project, it was implemented with
long-polling, like you described. We had lots of problems with the long
living connection being terminated without the browser noticing it.
Sometimes this was caused by exotic network, router and routing issues,
sometimes by 'just' an unstable connection.

Though the long-polling design can be made resilient against such
problems, the implementation becomes easier once you move to a
flip-flopping design. Almost al safeguards are already in the
flip-flopping. So you don't need an extra layer for error detection and
correction.

Right now we are using BOSH tuned such that the waiting time of the
client before opening a new (empty) connection to the server is slightly
shorter then the BOSH time out of the server. Like that we could very
easily make the system far more resilient against connection problems
then we ever managed while using long polling.

Winfried

Reply via email to