如何在www.example.com的服务器端node.js中发送系统消息stream.io

dgtucam1  于 2023-03-22  发布在  Node.js
关注(0)|答案(1)|浏览(85)

我目前正在使用stream.io,我想为后端发送系统消息。
当我运行下面的代码时,我得到这个错误消息“oth secret and user tokens are not set. Either client.connectUser wasn't called or client.disconnect was called”

const streamChannel = streamClient.getChannelById('livestream', roomId, {});
    await streamChannel.sendMessage({
      text: `X joined the room`
  });

但是当我尝试.connect User时,我得到这个错误“请不要使用connectUser服务器端。connectUser影响MAU和并发连接使用,从而影响您的账单。”
向房间发送系统消息的正确方法是什么?
编辑:获取我仍然得到这个错误. Call connectUser or connectAnonymousUser before creating a channel错误

const serverClient = StreamChat.getInstance('key', 'key');
    const streamChannel = serverClient.channel('messaging', 'roomId');
    const {message} = await streamChannel.sendMessage({
      user_id: "system_user",
      text: `${user?.username} joined the room`,
      type: "system"
    });
vaqhlq81

vaqhlq811#

这里发生了两件事:
1.您没有使用正确的连接代码。您需要使用服务器端连接(参见文档),而不是客户端连接(如此处所述)。
这是一个如何使用服务器端代码的示例:

// Initialize a Server Client
const serverClient = StreamChat.getInstance( api_key, api_secret);
// Create User Token
const token = serverClient.createToken(user_id);

为了发送消息,你可以这样做:

const serverClient = StreamChat.getInstance('API_KEY', 'API_SECRET');
const channel = serverClient.channel('messaging', 'my-channel');
const { message } = await channel.sendMessage({
        user_id: 'john',
        text: 'X joined the room',
});

1.第二件事是,我们更新了发送系统消息的方式。这是全新的,目前正在部署中,所以你可能需要等待很短的时间才能使用它(如果它还不适合你,请告诉我),但之后你可以像这样发送系统消息(基于前面的代码片段):

const { message } = await channel.sendMessage({
    user_id: 'john',
    text: 'X joined the room',
    type: 'system'
});

希望这对你有帮助,让我知道如果有更多的问题!

相关问题