To prevent the server from being overloaded by hanging contexts, each context (i.e. state) will only be kept alive for a given timeout. After that timeout the user will not be able to reconnect. Instead, he will get a new context. However, it is possible to set this timeout to a very high number.
See Enable Client Reconnect in Runtime Time or Enable Client Reconnect in Development Time to learn how to set the keep-alive timeout in a runtime or development time environment.