尝试在StreamJS中启用一对一聊天时未连接频道

问题描述

我有一个正在构建的应用程序,其中一个用户(称为admin)在大多数用户中拥有一个通道。我的理解是,无论我是谁(管理员用户)先创建一个聊天室,当我创建一个聊天室时,将只有一个频道存在。我的问题是,当我添加一个用户并在一个聊天中建立一个新用户时,其他频道也在我的频道列表中被复制。要么,要么有时根本根本无法连接频道,而用户却无法聊天。我使用的代码/伪代码如下,有人知道如何使用流创建多个一对一的聊天,或者为什么某些频道可能两次连接?

P.S。我正在编辑代码以将其简化为仅在堆栈溢出时位于此处的相关部分,因此请忽略下面的任何简单语法错误。谢谢!

  setupUserChats = async (chatClient) => {
    let { currentUser,participants } = this.props;


    if (the current user is an admin) {

      for (let i = 0; i < participants.length; i++) {
        let participant = participants[i];
        
        if (if the participant is a user) {
          
          let conversation = await chatClient.channel('messaging',{
            name: participant.name,members: [`${currentUser.participant_id}`,`${participant.participant_id}`]
          });

          await conversation.watch();
        }
      }
    }

    if (currentUser is a user) {

      for (let i = 0; i < participants.length; i++) {
        let participant = participants[i];

        if (participant is an admin) {

          let conversation = await chatClient.channel('messaging',{
            name: currentUser.name,`${participant.participant_id}`]
          });

          await conversation.watch();

        }
      }
    }

    this.setState({ chatClient: chatClient });

  }

调用一个函数(下面概述)来设置基本聊天,然后在下一个函数内部调用上面的代码

  setupChat = async () => {
    let { currentUser,participants } = this.props;

    let chatClient = await new StreamChat(process.env.REACT_APP_STREAM_API_KEY);
    let serverResult = await getStreamToken(currentUser.participant_id);
    let userToken = serverResult.token;

    await chatClient.setUser(
      {
        id: currentUser.participant_id,name: currentUser.name,},userToken,);



    const moderatorToAdmin = await chatClient.channel('messaging',`conference-ID`,{
      name: "moderator-chat"
    });


    await moderatorToAdmin.watch();


    this.setupUserChats(chatClient);



    moderatorToAdmin.addMembers([`${currentUser.participant_id}`]);
        
    this.setState({ chatClient: chatClient });
  };

然后将其全部呈现在这里


  render() {
    const { currentUser } = this.props;

    const filters = { members: { $in: [currentUser.participant_id] } }
    
    return (
      <div>
          <Chat client={this.state.chatClient} theme={'messaging light'} >
            <div className="title">Chat</div>
              <ChannelList
                filters={filters}
                Preview={MyChannelPreview}
              />
            <Channel Message={MyMessageComponent} >
              <Window>
                <MessageList />
                <MessageInput />
              </Window>
              <Thread />
            </Channel>
          </Chat>
      </div>
    );

  }




class MyChannelPreview extends React.Component {

  render() {
    const { setActiveChannel,channel } = this.props;

    return (
      <div className={`channel_preview` + currentChannelClass}>
        <a href="#" onClick={(e) => setActiveChannel(channel,e)}>
          {channel._data.name || channel.data.name}
        </a>
      </div>
    );
  }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...