聊天室 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