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