Extract a MessageRouter and a WebSocketServer, refactor Message