聊天室 JS-SDK
概述
本项目是保利威聊天室服务逻辑层 SDK。开发人员可以使用本 SDK 接入聊天室服务,或者基于本 SDK 定制开发聊天界面。
使用
安装
npm i @polyv/chat-sdk
初始化
传入参数实例化 SDK 类,然后调用实例方法 setup
。
import { Chat } from '@polyv/chat-sdk';
const chat = new Chat({
// 聊天室连接授权 token 获取方式参考 https://help.polyv.net/index.html#/live/api/channel/operate/get_chat_token
token: '聊天室 token',
// 聊天室用户信息
userInfo: {
// 用户id
userId: '',
// 用户昵称
nick: '',
// 用户头像
pic: '',
// 用户身份类型(如普通观众student、讲师teacher、云课堂观众slice)
userType: 'student',
// 头衔(如"讲师")
actor: ''
},
// 聊天室频道(房间)信息
channelInfo: {
// 频道id
channelId: '',
// 房间id
roomId: '',
// 频道所属账号id
accountId: '',
// 频道当前场次id
sessionId: '',
},
// 频道API访问令牌 channelToken 更新函数。对于讲师,部分功能需要传入获取 channelToken 及 appId 的函数才能正常使用。
// channelToken 获取方式参考 https://help.polyv.net/index.html#/live/api/channel/auth/get_channel_api_access_token
getChannelToken: (callback) => {
// ... 获取 channelToken 及 appId
callback({ channelToken, appId })
},
});
chat.setup();
更新配置
在某些情况下,需要更新聊天室SDK的配置信息。
比如直播场次有变化时,为了使用户在聊天室的发言与新场次关联,此时需要将新的直播场次 id 传入。
更新配置方法(参数结构与 SDK 类的构造函数参数一致,可仅提供部分字段,SDK 内部会进行合并更新)。
chat.updateConfig({
channelInfo: {
sessionId: '',
}
});
销毁实例
使用 destroy
方法销毁聊天室 SDK 实例,销毁后将断开 WebSocket 连接,并清空事件监听逻辑。
chat.destroy();
常用实例属性
属性名
类型
说明
events
Object
聊天室 SDK 事件列表
msgTypes
Object
聊天室 SDK 封装聊天消息类型
uploader
Object
聊天室图片消息上传发送工具
常用实例方法
方法名
入参
出参
说明
setChatEnabled
设置全体禁言
Boolean
Promise
事件处理
事件名
可通过 chat.events
或 Chat.EVENTS
访问SDK事件常量,用以监听聊天室事件并且进行处理。
console.log(chat.events);
事件的监听与取消监听
// 事件处理函数
const listener = (event) => {
console.log(event);
};
// 使用 chat.on 监听事件
chat.on(chat.events.SPEAK, listener);
// 使用 chat.off 取消监听事件
chat.off(chat.events.SPEAK, listener);
聊天室控制
此项内容针对讲师/管理员等特殊角色,这些角色拥有部分管理聊天室消息的权限。
聊天室禁言
可通过 setChatEnabled
方法关闭聊天室,聊天室关闭后普通用户无法发言。
注意:必须为聊天室SDK配置 getChannelToken
参数,用于调用相应权限接口。
async function setChatEnabled(enabled) {
// enabled 为 Boolean,true 表示开启聊天室,false 表示关闭聊天室
await chat.setChatEnabled(enabled);
}
其他注意事项
setup
是异步方法,返回值是一个 promise,该promise在聊天室连接成功后被 resolve。
可以不用等待该 promise 完成,setup 并立即进行聊天室事件监听,以便于处理 CONNECT
等初始事件。
Last updated
Was this helpful?