"Network interruption occurred. Reconnecting…",当我最小化或最大化 chabot 时如何潜在地自动重新连接

"Network interruption occurred. Reconnecting…" , How to potentially automatically reconnect when i minimize or maximize chabot

我们已经实现了 bot framework-webchat 来创建一个 bot。目前,我们使用组件中传递的事件(代码如下所示)来处理最小化和最大化,但是当我最小化然后最大化我看到的聊天机器人时会出现挑战 'Unable to connect' 消息然后它闪烁,如果一个小时后- 稍后如果我们最小化和最大化我得到 'Network interruption occurred, Reconnecting...' 当我最小化和最大化 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>
  )
}

您似乎在 "MaximizeChatWndow()" 中创建了 directLine 对象,我认为这是问题所在。在 "MaximizeChatWndow()" 中,您应该获取您的令牌并将其传递给您的网络聊天组件。在 Web 聊天组件中,您应该使用令牌来调用 createDirectLine()

06.recomposing-us/a.minimizable-web-chat 示例似乎有各种更新。 (这些文档看起来也已经过时并且不再与代码匹配)。但是,如果与可用的示例代码进行比较,您会想要执行如下操作。请查看上面的完整代码 link,因为我在这里只包括最相关的部分。

当我测试时,对话重置或网络没有问题 disconnecting/reconnecting。

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 ...
  );
};

希望得到帮助!