On Thursday 19 March 2009 14:51:08 Fabio Forno wrote: > Which is the value of having a <ping/> and a <pong/> stanza in > addition to <a/> <r/> stanzas besides the ability of sending back and > error condition saying that packets are being throttled?
It's also useful to ping the connection when there's otherwise no traffic. Of course you could just use the ack packets with a sequence number for this, but having a separate <ping> element seemed cleaner. > I'm asking > because I'm wondering if this is feasible, since when a connection is > throttled packets are usually queue in a buffer before calling the xml > parser and also pings aren't processed. Indeed, which is why the original document said the server SHOULD respond to pings while throttling, not that it MUST. However, maybe it's time to reevaluate how throttling should be done. In order to ensure presence isn't stale, clients (and servers) are going to want to abandon the connection quickly if it appears dead. I understand that not reading the socket is a very good way to throttle connections, but at the same time how is a client supposed to tell the difference between a throttled connection and a dead connection? Maybe the server could send unsolicited pongs ("you're not dead!") while the receive channel is blocked? -Justin