Stream.io: 如何从服务器获取用户未读消息数

Stream.io: How to get a users unread messages count from the server

有什么方法可以从服务器查询所有频道的用户未读消息总数吗?

我知道可以使用 setUser 从客户端执行此操作,但这不适合在服务器端场景中使用。我正在使用 nodejs,如有任何建议,我们将不胜感激。

谢谢, 马克

这就是我从服务器获取所有渠道的所有消息的方式。我是用JS写的,希望对你有帮助:


async function listUnreadMessages(user) {
  const serverClient = new StreamChat(api_key, stream_secret, options)
  await serverClient.setUser(
    {
      id: `${user.id}`,
      name: `${user.full_name}`,
      image: user.profile_image
    },
    user.chat_token
  )

  const filter = { members: { $in: [`${user.id}`] } }
  const sort = { last_message_at: -1 }
  const channels = await serverClient.queryChannels(filter, sort, {
    watch: true
  })
  let unreadList = {}
  const unreads = await Promise.all(
    channels.map((c) => {
      unreadList[c.id] = c.countUnread()
      return c.countUnread()
    })
  )
  serverClient.disconnect()
  return unreadList
}