[Standards-JIG] Re: WHACK
Michal vorner Vaner
michal.vaner at kdemail.net
Wed Apr 26 14:17:34 UTC 2006
As I'm reading trough the discussion, I got an idea.
Forsdtly, any use transport protocol, being it TCP, HTTP polling or
whatever, guarantees you will not lose any data "in the middle" and you
get them in order.
That means, if you receive something, you received for sure all what was
sent before. If we use this, the only place, where data can be lost is
on the end. And it is usually only when the connection died.
So, if I get something from the other side right now, then the
connection is not dead and the other one almost for sure got his data as
well. So I can expect I did route what I was supposed until this point.
Therefore, whenever I get _any_ data, I can take is as an ack that it
was sent. Clients would be allowed to send whitespace pings as they want
(if it got to server, it is almost sure they got their data as well).
They would only have to respond by something allowed on any stanza, but
it would not matter if it was whitespace ack or any stanza (for example,
there is no need to ack a stanza that has a response) or it could ack
more stanza at once.
Only thing the sending entity would need to do is keeping some track of
what was sent in the time from last received data. If the connection is
closed with an error now, it means that the stanzas stored may have been
lost. There is probably no need to take care about presences, as the
client will get presences from all the others once it connects. The
messages could be stored into offline store or responded by an error.
Whenever the sending entity receives any data, it erases this storage.
If the other does not respond for a some time and there is something
waiting in the storage (asuming the other agreed on using this feature)
or when the storage grows to some size, the connection could be
considered closed in an unclean way.
The clients could chose to ack as often as they want, every stanza, take
care that something is sent every 60 seconds (that is what many do
anyway, to keep firewalls), or to do something more clever, like keeping
track of if something was received and not acked and way for example 3
seconds, if there is some real response or ack it by a whitespace.
NAT should extinkt like dinosaurs did.
Michal "vorner" Vaner
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 191 bytes
Desc: not available
More information about the Standards