聊天室 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.eventsChat.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?