BotFramework-WebChat销毁componentWillUnmount上的所有bot活动订阅

时间:2018-04-10 13:46:20

标签: reactjs direct-line-botframework

我正在使用bot framework-webchat 0.12.0版本的React App。我正在使用自定义botconnection初始化Chat组件,从而创建一个反向通道机制。

有谁知道如何取消订阅/销毁反向频道中的所有机器人活动?

当我检查网络选项卡时,似乎当我使用react路由器导航到包含webchat组件的视图时,每次都会初始化WebSocket连接,即使在卸载组件后它仍保持打开状态(导航) 。 我担心这些Web套接字连接如果不被删除就可能成为问题。

以下是我在React组件中所做的事情:

import { Chat, DirectLine } from 'botframework-webchat';
...
componentDidMount() {
    const { user, token } = this.props;
    if (token && user && Object.keys(user).length !== 0) {
        this.botConnection = new DirectLine({
            secret: configs.bot.secret_key,
            webSocket: 'true'
        });

        this.initBot();
    }
}
initBot = () => {
    const { token, user } = this.props;
    this.botConnection.postActivity({
        type: 'event',
        value: {
            accessToken: token,
            context: 'user'
        },
        from: {
            id: user.userName
        },
        name: 'conversationInfo'
    }).subscribe(() => {
        this.setState({ renderChatBot: true });
    });
}
...
render() {
    const { token, user } = this.props;
    if (token !== '' && this.state.renderChatBot) {
        console.log('BOTCHAT RENDER');
        return (
            <Chat
                bot={{ id: configs.botId }}
                botConnection={this.botConnection}
                user={{ id: user.userName }}
                token={token}
                resize="detect"
            />
        );
    }
    return null;
}

我花了几个小时搜索文档并通过文件读取文件,当webchat组件卸载时,我似乎无法找到销毁这些Web套接字连接的方法。

非常感谢任何帮助。

0 个答案:

没有答案