code: def _inner_open(self):
      url = "ws://{}:{}".format(
          self.args.nnimanager_ip, self.args.nnimanager_port
      )
      try:
          connect = asyncio.wait_for(
              websockets.connect(url), self.timeout
          )
          self._event_loop = asyncio.get_event_loop()
          client = self._event_loop.run_until_complete(connect)
          self.client = client
          nni_log(
              LogType.Info, "WebChannel: connected with info %s" % url
          )
      except asyncio.TimeoutError:
          nni_log(
              LogType.Error,
              "connect to %s timeout! Please make sure NNIManagerIP configured correctly, and accessable."
              % url,
          )
          os._exit(1)
  
file_path: nni/nni/tools/trial_tool/web_channel.py
imports: import asyncio
  import os
  import websockets
  from .base_channel import BaseChannel
  from .log_utils import LogType, nni_log
label_desc: Use image node_id 2 for calling the WebChannel obj's underlying member method code with example usage: obj._inner_open() without return types