On Sun, 11 Jan 2009 15:55:03 -0800, Rob Bredow <r...@185vfx.com> wrote:
I've implemented a twisted server using the basic.lineReceiver class.  The
client is a socket based client implemented in flash and the connections are
long-lived (minutes or hours).  To handle cleaning up the players when they
disconnect, I'm using the connectionLost function in my player class.  99%
of the time, things work as expected.

However in rare cases, connectionLost is not getting called when the
flash-based client disappears.  Even completely quitting the client's
web-browser does not always trigger a connectionLost call.  I tracked down
one specific instance yesterday where the server thought the client was
still connected even though the client had been gone for 30+ minutes--but
after a few hours the server noticed that the client was gone and then
connectionLost was called like normal.  That made me think that it might be
a problem on the server side and maybe not client related.

I'm starting on a workaround now where the client will issue a "PING" every
30 seconds and the server will use the ping information to manually trigger
loseConnection when needed.  Are there a better workarounds for this, better
practices or some error checking I can do to avoid these intermidant laggy
connectionLost calls?

This is a FAQ, so I've just added it to the FAQ.  Please let me know what
you think of the entry:

http://twistedmatrix.com/trac/wiki/FrequentlyAskedQuestions#WhyisntmyconnectionLostmethodcalled

Jean-Paul

_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python

Reply via email to