code: def receive(self) -> Command | None:
      while True:
          if self._closing:
              return None
          command = self._receive_command()
          if command is None:
              return None
          if command["type"] == "_nop_":
              continue
          if command["type"] == "_bye_":
              reason = command.get("reason")
              _logger.debug(f"Server close connection: {reason}")
              self._closing = True
              self._close_conn("server intentionally close")
              return None
          return command
  
file_path: nni/nni/runtime/command_channel/websocket/channel.py
imports: from __future__ import annotations
  import logging
  import time
  from ..base import Command, CommandChannel
  from .connection import WsConnection
label_desc: Use image node_id 5 for calling the WsChannelClient obj's underlying member method code with example usage: obj.receive() and returns: command, None, None, None