code: def run_forever(self):
          
          cnt = 0
          while True:
              cnt += 1
              self.url = next(self.urls)
              log.debug("Trying to connect to node %s" % self.url)
              try:
                  # websocket.enableTrace(True)
                  self.ws = websocket.WebSocketApp(
                      self.url,
                      on_message=self.on_message,
                      # on_data=self.on_message,
                      on_error=self.on_error,
                      on_close=self.on_close,
                      on_open=self.on_open,
                  )
                  self.ws.run_forever()
              except websocket.WebSocketException as exc:
                  if self.num_retries >= 0 and cnt > self.num_retries:
                      raise NumRetriesReached()
  
                  sleeptime = (cnt - 1) * 2 if cnt < 10 else 10
                  if sleeptime:
                      log.warning(
                          "Lost connection to node during wsconnect(): %s (%d/%d) "
                          % (self.url, cnt, self.num_retries)
                          + "Retrying in %d seconds" % sleeptime
                      )
                      time.sleep(sleeptime)
  
              except KeyboardInterrupt:
                  self.ws.keep_running = False
                  raise
  
              except Exception as e:
                  log.critical("{}\n\n{}".format(str(e), traceback.format_exc()))
docs: This method is used to run the websocket app continuously.
              It will execute callbacks as defined and try to stay
              connected with the provided APIs