Open a secure cookie based session.

        This will return None if a signing serializer is not availabe,
        usually if the config SECRET_KEY is not set.

async def open_session(
            self,
            app: 'Quart',
            request: BaseRequestWebsocket,
    ) -> Optional[SecureCookieSession]:
        """Open a secure cookie based session.

        This will return None if a signing serializer is not availabe,
        usually if the config SECRET_KEY is not set.
        """
        signer = self.get_signing_serializer(app)
        if signer is None:
            return None

        cookie = request.cookies.get(app.session_cookie_name)
        if cookie is None:
            return self.session_class()
        try:
            data = signer.loads(
                cookie, max_age=app.permanent_session_lifetime.total_seconds(),
            )
            return self.session_class(**data)
        except BadSignature:
            return self.session_class()