code: def websocket(self, uri, *args, **kwargs):
          
  
          kwargs.setdefault('host', None)
          kwargs.setdefault('strict_slashes', None)
          kwargs.setdefault('subprotocols', None)
          kwargs.setdefault('name', None)
          kwargs['with_context'] = True  # This is the whole point of this plugin
  
          def wrapper(handler_f):
              nonlocal self, uri, args, kwargs
              return super(Contextualize, self).websocket(
                  uri, *args, **kwargs)(handler_f)
          return wrapper
docs: Create a websocket route from a decorated function
          :param uri: endpoint at which the socket endpoint will be accessible.
          :type uri: str
          :param args: captures all of the positional arguments passed in
          :type args: tuple(Any)
          :param kwargs: captures the keyword arguments passed in
          :type kwargs: dict(Any)
          :return: The exception function to use as the decorator
          :rtype: fn