code: async def src_reload(app, path: str = None):
      
      cli_count = len(app[WS])
      if cli_count == 0:
          return 0
  
      is_html = None
      if path:
          path = str(Path(app['static_url']) / Path(path).relative_to(app['static_path']))
          is_html = mimetypes.guess_type(path)[0] == 'text/html'
  
      reloads = 0
      aux_logger.debug('prompting source reload for %d clients', cli_count)
      for ws, url in app[WS]:
          if path and is_html and path not in {url, url + '.html', url.rstrip('/') + '/index.html'}:
              aux_logger.debug('skipping reload for client at %s', url)
              continue
          aux_logger.debug('reload client at %s', url)
          data = {
              'command': 'reload',
              'path': path or url,
              'liveCSS': True,
              'liveImg': True,
          }
          try:
              await ws.send_str(json.dumps(data))
          except RuntimeError as e:
              # eg. "RuntimeError: websocket connection is closing"
              aux_logger.error('Error broadcasting change to %s, RuntimeError: %s', path or url, e)
          else:
              reloads += 1
  
      if reloads:
          s = '' if reloads == 1 else 's'
          aux_logger.info('prompted reload of %s on %d client%s', path or 'page', reloads, s)
      return reloads
docs: prompt each connected browser to reload by sending websocket message.
  
      :param path: if supplied this must be a path relative to app['static_path'],
          eg. reload of a single file is only supported for static resources.
      :return: number of sources reloaded