我正在尝试使用getstream.io聊天SDK创建类似松弛的应用程序。在文档中,我们可以找到如何启动频道以开始群聊。但是,没有有关一对一聊天的任何信息。有谁知道如何发起一对一聊天?
代码示例以创建新的群组聊天渠道
const client = new StreamChat('t5v25xyujjjq');
await client.setUser(
{
id: 'jlahey',
name: 'Jim Lahey',
image: 'https://i.imgur.com/fR9Jz14.png',
},
'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoiamxhaGV5In0.sFe9WvuHIKgQmgtEWFh708Nu_a2wy8Zj3Q8BJz7fDRY',
);
const channel = chatClient.channel('messaging', 'groupname', {
name: 'Founder Chat',
image: 'profile image url',
members: ['user1', 'user2'],
});
const response = await channel.sendMessage({
text: 'Josh I told them I was pesca-pescatarian'
});
最佳答案
如果要保证N个用户之间仅存在一个频道,则可以实例化没有ID的频道及其成员列表。
当您执行此操作时,API将确保仅存在一个包含成员列表的频道(成员的顺序无关紧要)。
const distinctChannel = conversation.channel("messaging","", {
members: [user1.id, user2.id],
});
await distinctChannel.create();
由于两个成员的渠道数据都将相同;我建议不要像在代码示例中那样存储
image
字段。呈现对话时,使用“其他”成员个人资料图像作为频道图像会更容易。例如:
let channelImage = "https://path/to/fallback/image";
otherMembers = channel.members.filter(member => member.user.id != currentUser.id);
if otherMembers.length > 0 {
channelImage = otherMembers[0].image;
}