GWT doesn't try to associate particular clients with particular
servers. Each RPC call is assumed to be statelss from both the client's
and the server's perspective. This is a little harder to design, but it
is basically a preqrequisite to creating apps that are both scalable
and fault tolerant.
For your specific situation, it seems like the sever-side socket
connection ought to have a timeout, probably implemented using a
separate thread within your serlvet. The socket timeout then could
reset itself whenever an RPC comes in. Unless you have very unusual
circumstances, I'd recommend against sending empty keep-alives from the
client. Just use the natural RPC calls to act as a keep-alive. Trying
to a create very tight binding between a particular client and a
particular server is not a good match for HTTP.