class_docstr: An earlier version of this code (#626) was originally developed as part of the following work:
  
  Rabault, J., Kuhnle, A (2019). Accelerating Deep Reinforcement Leaning strategies of Flow
  Control through a multi-environment approach. Physics of Fluids.
code: def __init__(self, host, port, blocking=False):
      socket = Socket()
      for _ in range(100):  # TODO: 10sec timeout, not configurable
          try:
              socket.connect((host, port))
              break
          except ConnectionRefusedError:
              time.sleep(0.1)
      else:
          raise TensorforceError(
              "Remote socket connection could not be established."
          )
      super().__init__(connection=socket, blocking=blocking)
  
file_path: tensorforce/tensorforce/environments/socket_environment.py
imports: from socket import SHUT_RDWR, socket
  import time
  import msgpack
  import msgpack_numpy
  from tensorforce import TensorforceError
  from tensorforce.environments import RemoteEnvironment
label_desc: Use image node_id 8 to create a new SocketEnvironment object from inherited base classes: RemoteEnvironment with example: obj = SocketEnvironment(host, port, blocking)