docs: async def create_websocket(url: str,
                             ssl: Optional[SSLContext] = None,
                             headers: Optional[list] = None,
                             subprotocols: Optional[list] = None):
      """
      A more low-level form of open_websocket.
      You are responsible for closing this websocket.
      """
      url = yarl.URL(url)
      args = {}
      if headers:
          args["headers"] = headers
  
      # automatically use ssl if it's websocket secure
      if ssl is None:
          ssl = url.scheme == "wss"
      if ssl:
          if ssl is True:
              ssl = SSLContext()
          args["ssl_context"] = ssl
          args["autostart_tls"] = True
          args["tls_standard_compatible"] = False
  
      addr = (url.host, int(url.port))
      ws = Websocket()
      await ws.__ainit__(
          addr=addr, path=url.path_qs, subprotocols=subprotocols, **args)
      return ws