«Произошло прерывание сети. Повторное подключение…», Как потенциально автоматически восстановить соединение, когда я минимизирую или максимизирую Шабо - PullRequest
1 голос
/ 29 января 2020

Мы создали бот-фреймворк-webchat для создания бота. В настоящее время мы обрабатываем минимизацию и максимизацию с помощью события, переданного в компоненте (код показан ниже), но проблема возникает, когда я минимизирую и затем максимизирую чат-бота, которое я вижу, сообщение «Невозможно подключиться», а затем оно мигает, и если через час -далее позже, если мы минимизируем и максимизируем, я получаю «Произошло прерывание сети, переподключение ...». Как сохранить веб-чат потенциально автоматически переподключаться при минимизации и максимизации Chabot.

MaximizeChatWndow () {
  if (this.state.token === null &&
    this.state.productService === null) {
    return
  }

  this.setState({
    directLine: this.createDirectLine()
  }, () => {
    this.setState({
      minimized: false,
      newMessage: false,
      userId: 'User_' + Math.random
    })
  })
  this.checkExpandFlag = true
}

Компонент:

render () {
  const {
    state: { minimized, store }
  } = this 
  return (
    <Row>
     <Col md={12}>
       <div>
         {minimized ? (
           <ChatDon
             handleMaximizeButtonClick={this.handleMaximizeButtonClick}
           />
         ) : (
           <ChatWin
             handleMinimizeButtonClick={this.handleMinimizeButtonClick}
             directLine={this.state.directLine}
             userId={this.state.userId}
             store={store}
           />
         )}
       </div>
     </Col>
   </Row>
  )
}

1 Ответ

1 голос
/ 05 февраля 2020

Похоже, вы создаете свой объект directLine в "MaximizeChatWndow ()", что, я думаю, является проблемой. В «MaximizeChatWndow ()» вы должны получить свой токен и передать его в компонент веб-чата. Именно в компоненте веб-чата вы должны использовать токен для вызова createDirectLine().

Похоже, что в 06.recomposing-us / a.minimizable-web- произошли различные обновления. чат образец. (Документы также выглядят как устаревшие и больше не соответствуют коду). Однако, если сравнивать с доступным примером кода, вам нужно сделать что-то вроде следующего. Пожалуйста, посмотрите полный код в приведенной выше ссылке, так как я включаю только самые важные части здесь.

Когда я тестировал, у меня не было проблем с сбросом разговора или отключением / повторным подключением сети.

MinimizableWebChat. js

import WebChat from './WebChat';

const MinimizableWebChat = () => {

  [...]

  const [token, setToken] = useState();

  const handleFetchToken = useCallback(async () => {
    if (!token) {
      const res = await fetch('http://localhost:3500/directline/token', { method: 'POST' });
      const { token } = await res.json();

      setToken(token);
    }
  }, [setToken, token]);

  [...]

  return (
    [...]
    <WebChat
      className="react-web-chat"
      onFetchToken={handleFetchToken}
      store={store}
      styleSet={styleSet}
      token={token}
    />
  )

WebChat. js

const WebChat = ({ className, onFetchToken, store, token }) => {
  const directLine = useMemo(() => createDirectLine({ token }), [token]);

  [...]

  useEffect(() => {
    onFetchToken();
  }, [onFetchToken]);

  return token ? (
    <ReactWebChat ...
  );
};

Надежда на помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...