本项目是保利威直播互动功能接收端(观众端)的逻辑层 SDK。开发人员可以使用本 SDK 接入互动功能,或者基于本 SDK 定制开发互动功能界面。
npm i -S @polyv/interactions-receive-sdk
// script 标签引入,根据版本号引入JS版本。
<script src="https://websdk.videocc.net/interactions-receive-sdk/0.7.0/lib/polyv-ir.umd.js"></script>
<script>
const { updateConfig } = window.PolyvIRSDK;
</script>
import { updateConfig } from '@polyv/interactions-receive-sdk';
使用本 SDK 的具体功能模块前,必须调用 updateConfig
方法传入配置信息,包含频道信息、观众信息和连接聊天室的 Socket.IO 实例等信息。
const userInfo = {
// 昵称
nick: '观众昵称',
// 头像
pic: 'https://example.com/avatar.jpg',
// 观众id
userId: '1',
};
const channelInfo = {
// 频道号
channelId: '',
// 房间号
roomId: '',
// 频道场次id
sessionId: '',
};
updateConfig({
// 观众信息
userInfo: userInfo,
// 频道信息
channelInfo: channelInfo,
// 此处传入 socketio 实例,具体获取方式请看下文
socket: socket,
// viewerApiToken 更新函数
getViewerApiToken: async (callback) => {
const viewerApiToken = await myViewerApiTokenGetter();
callback({ viewerApiToken })
},
})
在配置完成后,支持再次调用并传入新的配置参数(允许仅更新部分参数)。比如:
userInfo 指观众信息,部分互动功能在请求服务端数据时将需要用到。需传入一个对象类型的参数,详细字段信息如下:
属性名 | 类型 | 含义 |
---|---|---|
nick | string | 观众昵称(要求具有唯一性) |
pic | string | 观众头像 |
userId | string | 观众id(指客户业务系统中的用户id,应当具有唯一性) |
channelInfo 指频道信息,需传入一个对象参数,该参数详细字段信息如下:
属性名 | 类型 | 含义 |
---|---|---|
channelId | string | 直播频道号 |
roomId | string | 房间号,一般情况下房间号与频道号一致。若频道开启聊天室分房间功能,需传入具体分房间号 |
sessionId | string | 频道场次id,每次频道直播推流后都会产生一个新的场次id,直播过程中产生的各种互动数据与该场次id相关联 |
Tips
'CHANNEL_DATA_INIT'
事件参数中的 sessionId 字段,获取频道当前场次 id。本参数是发送和接收 WebSocket 消息的对象,主要用于与保利威后端建立长连接来完成各种实时的互动功能。 为了获取到这个参数,本项目必须搭配以下两个 SDK 之一使用:
具体获取方式可参考以下示例代码。
const chatroom = new PolyvChatRoom({
// 相关参数
});
// 配置互动功能SDK
updateConfig({
// 此处传入 socketio 实例
socket: chatroom.chat.socket,
userInfo: userInfo,
channelInfo: channelInfo,
getViewerApiToken,
});
const liveSdk = new PolyvLiveSdk({
// 相关参数
});
// 配置互动功能SDK
updateConfig({
// 此处传入 socketio 实例
socket: liveSdk.socket,
userInfo: userInfo,
channelInfo: channelInfo,
getViewerApiToken,
});
本 SDK 调用后端接口时,需要用到 apiToken。获取 apiToken 的交互流程如下:
在这个流程中,需要调用 polyv 服务端接口。由于该接口的参数涉及 appId 和 appSecret 等敏感信息,因此需要由接入方的服务端去请求该接口,而不是直接在前端请求。
getViewerApiToken
是一个异步函数,用于请求接入方的接口获取 apiToken,然后通过调用 callback
回调函数返回给 SDK。由于 apiToken 有一定的有效期,所以在 SDK 运行期间,该函数可能会执行多次。
async function getViewerApiToken(callback) {
const viewerApiToken = await api.post('[接入方获取token接口]');
// 回调函数更新SDK内token
callback({ viewerApiToken });
};
updateConfig({
// 其他配置参数
getViewerApiToken,
});
点击此处可查看 API 文档。
完成配置后,即可进行各模块SDK的实例化使用。 具体见各模块详细文档。
Generated using TypeDoc