def __init__(self, websocket, **details):
        """
        Create a connection object provided:
        - websocket (tornado.websocket.WebSocketHandler instance
        - details: dictionary of metadata associated to the connection
        """
        self.id = create_global_id()

        # set connection attributes, if any is given
        for name, value in details.items():
            setattr(self, name, value)

        # meta-data
        # TODO: update this
        self.last_update = datetime.now().isoformat()

        # communication-related
        self._websocket = websocket
        self.topics = {
            "subscriber": {},
            "publisher": {}
        }

        # when connection should be closed but something is left
        self.zombie = False
        self.zombification_datetime = None