保利威文档中心

幫助中心

聊天室 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.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 等初始事件。

联系客服,在线咨询
在线咨询