On Jul 29, 2013, at 5:00 PM, Tristan Seligmann <mithrandi@mithrandi.net> wrote:

On Tue, Jul 30, 2013 at 12:31 AM, Glyph <glyph@twistedmatrix.com> wrote:

On Jul 29, 2013, at 3:10 PM, Werner Thie <werner@thieprojects.ch> wrote:

I've written a few Nevow/Athena based game servers in the last years, and I'm still convinced that I have chosen the right technology for the problems at hand. Time given, I might tackle the coding to have the underlying transport to be switched to websockets when available as Glyph suggested, but currently I see no performance issues and the servers are running with uptimes now measured in years.

To be honest, the main reason to add websocket support is not so much that there is a significant performance problem that needs to be addressed, but rather that people are going to show up _expecting_ that there's a significant performance problems because they've heard on some JavaScript forum that websockets are fast :).  If Nevow can just tick that box on the feature list, there's that much less to argue about.

I'd like to add that I'm aware of at least one significant performance problem[1] in Athena (not sure if there's a bug report lying around for it anymore, although I think there was one in Trac-that-was), but it's to do with the reliable delivery transport that Athena runs on top of long polling (which I believe would still be required on top of websockets), rather than the long polling / HTTP itself. Long polling in general is pretty reliable, the main problem is with proxy servers that time the connection out faster than Athena recycles it, but this value is configurable so the problem is easily worked around.

[1] When sending several messages "at once" with Athena under some specific set of circumstances (I'm not sure exactly what they are, but the behaviour is repeatable), the one side will ACK the first message before processing the second message, leading to the other side retransmitting the remaining messages even though they were not lost. This shows up as multiple "Athena transport duplicate message, discarding: ..." log messages, and has the result of increasing bandwidth usage / latency; depending on the number / size of the retransmitted messages, the impact may be negligible or noticeable.

This does sound like a real bug :).  My point is that it's not one that would necessarily be addressed *just* by switching to websockets...