IM 即时通讯
Web
产品介绍
简介
主要功能
产品优势
海外数据中心
IM平滑迁移方案
接口及业务限制
功能介绍
帐号集成与登录
基础消息功能
群组功能
聊天室功能
聊天室标签功能
多端登录与互踢策略
质量数据监控台
体验 Demo
下载 SDK 与 Demo 源码
更新日志
IM UIKit 更新日志
NIM SDK 开发版更新日志
NIM SDK 稳定版更新日志
快速开始
跑通 IM Demo 源码
实现 IM 文本消息收发(不含 UI)
含 UI 集成
什么是 IM UIKit
IM UIKit 功能概览
快速集成 IM UIKit
非React框架集成 IM UIKit
组件导入
初始化
全局上下文
登录相关
实现消息收发及界面自定义
集成会话列表界面
集成会话消息界面
集成用户资料组件
集成通讯录界面
集成搜索组件
非 React 框架自定义渲染
主题样式设置
语言设置
初始化(兼容 NIM SDK)
不含 UI 集成
集成 SDK
浏览器环境集成
Node.js集成
初始化与登录相关
初始化与登录 IM
IM 连接相关
多端登录与互踢
消息相关
消息概述
消息收发
消息配置选项
广播消息收发
消息已读回执
消息撤回
消息重发与转发
本地消息
通知消息
群通知消息
超大群通知消息
历史消息
最近会话
用户资料托管
好友关系托管
用户关系托管
在线状态订阅
群组功能
群组概述
群组管理
群成员管理
群消息管理
超大群功能
系统通知
系统通知概述
内置系统通知管理
内置系统通知未读数
自定义系统通知收发
开通聊天室功能
聊天室
反垃圾(内容审核)
域名高可用
融合存储方案
扩展功能
工具方法
最佳实践
聊天室重要消息投递
API参考
SDK API (Web)
IM UIKit Store API
状态码
IM 控制台指南
创建应用
注册 IM 账号
升级服务
开通聊天室功能
配置应用客户端标识
常见问题
FAQ
服务协议

聊天室队列服务

更新时间: 2022/12/21 15:55:40

聊天室队列指聊天室(房间)中由多个元素(key-value 键值对)构成的队列,应用于直播间中的连麦场景和礼物队列展示等场景。

本文介绍聊天室队列服务的技术原理、使用的前提条件以及实现聊天室队列相关操作的方法。

技术原理

网易云信 IM SDK 的 CHATROOM_BROWSER_SDK 下的 ChatroomQueueInterface 模块提供 ChatroomQueue 定义聊天室队列,其取值为 key-value 数组。

通过定义 keyvalue 的值,您可以定义聊天室队列中的元素。以直播连麦场景的开发为例,通过定义 key-value 键值对的值,可将麦位和用户账号关联起来定义为该场景里麦位队列的元素,之后便可调用 ChatroomQueueInterface 下的方法对 ChatroomQueue 进行相应的操作管理。

聊天室队列示例图.png

上图仅为示例,请以您的实际业务场景需求进行开发。

前提条件

在实现聊天室队列相关操作管理前,请确保您已:

实现方法

初始化聊天室队列

调用 init 方法,调用时传入 queueInitOptions下的参数,即可初始化聊天室队列。

该方法主要用于设置聊天室队列的长度限制 maxItemCount ,即队列中可包含的最大元素数量(取值范围:0 至 1,000)。

接口原型如下:

export type QueueInitOptions = {
  /**
   * 新建队列的长度限制(0~1000),可以对现有队列做此操作,修改现有队列的长度上限;当前队列如果已经超过了新的限制,元素不会减少,但是新元素无法增加
   */
  maxItemCount: number
}
/**
  * 初始化聊天室队列
  */
init(options: QueueInitOptions): Promise<void>

const chatroom = new Chatroom(options)
chatroom.chatroomQueue.init({maxItemCount:100})

排序列出所有元素

调用 fetch 方法可排序列出聊天室队列的所有元素。

接口原型如下:

/**
  * 排序列出所有元素
  */
fetch(): Promise<ChatroomQueue[]>

const chatroom = new Chatroom(options)
chatroom.chatroomQueue.fetch()

加入或更新队列元素

调用 update 方法可加入或更新聊天室队列元素。调用时传入 QueueOfferOptions 下的 elementAccountelementKeyelementValuetransient,可定义加入/更新的新元素的所属用户账号、UniqKey、内容等特性。

接口原型如下:

export type QueueInitOptions = {
  /**
   * 新元素的UniqKey,长度限制128字节
   */
  elementKey: string
  /**
   * 新元素内容,长度限制4096字节
   */
  elementValue: string
  /**
   * 可选参数,不传默认false,当提交这个新元素的用户从聊天室掉线或退出的时候,是否需要删除这个元素。
   */
  transient?: boolean
  /**
   * 可选参数,队列元素所属账号,默认不传表示队列元素属于当前操作人,管理员可以指定队列元素归属于其他合法账号
   */
  account?: string
}
/**
  * 加入或者更新队列元素
  */
update(options: QueueUpdateOptions): Promise<void>

const chatroom = new Chatroom(options)
chatroom.chatroomQueue.update({elementKey:'...',elementValue:'...'})

批量更新队列元素

调用 batchUpdate 方法可批量更新至多 100 个聊天室队列的元素。传入参数详见 QueueChangeOptions

接口原型如下:

export type QueueBatchUpdateOptions = {
  /**
   * 批量更新元素的key-value对,key/value分别是elementKey和elementValue(elementKey 限制 128, elementValue 限制 4096 字节),一次最多更新100个
  itemList: {
    [key: string]: string
  }
  /**
   * 是否需要发送广播通知,可选参数,不传默认false,当设置为 true 时,所有聊天室成员会收到类型为'updateQueue'的聊天室通知消息。
   */
  needNotify?: boolean
  /**
   * 通知中的自定义字段,长度限制2048
   */
  notifyExtension?: string
}
type ChatroomQueue = {
  [key: string]: string
}
/**
  * 批量更新聊天室队列元素
  */
batchUpdate(options: QueueBatchUpdateOptions): Promise<ChatroomQueue[]>

const chatroom = new Chatroom(options)
chatroom.chatroomQueue.batchUpdate({itemList:{a:"111"})

查看队列中首个元素

调用 pickHeader 方法可查看聊天室队列中的第一个元素。

接口原型如下:

type ChatroomQueue = {
  [key: string]: string
}
/**
  * 查看聊天室队列中的第一个元素
  */
pickHeader(): Promise<ChatroomQueue>

const chatroom = new Chatroom(options)
chatroom.chatroomQueue.pickHeader()

将指定元素从队列中踢除

调用 poll 方法可将指定元素(不传入参默认取出第一个元素)从聊天室队列中踢除。入参详情请参见 QueuePollOptions

接口原型如下:

type ChatroomQueue = {
  [key: string]: string
}
export type QueuePollOptions = {
  /**
   * 需要取出的元素的 UniqKey, 传空传表示取出第一个元素
   */
  key?: string
}
/**
  * 取出聊天室队列指定/第一个元素
  */
poll(options: QueuePollOptions): Promise<ChatroomQueue>

const chatroom = new Chatroom(options)
chatroom.chatroomQueue.poll()

清除队列

调用 clear 方法清空聊天室队列。

接口原型如下:

/**
  * 清空队列
  */
clear(): Promise<void>

const chatroom = new Chatroom(options)
chatroom.chatroomQueue.clear()
此文档是否对你有帮助?
有帮助
我要吐槽
  • 技术原理
  • 前提条件
  • 实现方法
  • 初始化聊天室队列
  • 排序列出所有元素
  • 加入或更新队列元素
  • 批量更新队列元素
  • 查看队列中首个元素
  • 将指定元素从队列中踢除
  • 清除队列