Encapsulate socket state in AuthHandler, properly handle disconnects