保利威文档中心

幫助中心

聊天室 JS-SDK

更新時間:2021-09-01 10:41:31

概述

本專案是保利威聊天室服務邏輯層 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 等初始事件。

联系客服,在线咨询