1.0.0 • Published 5 years ago
chatroom-web-sdk v1.0.0
chatroom-web
安装
npm install -S chatroom-web
如何使用
import * as uuid from "uuid";
// 引用 SDK
import { SimpleSDK } from "chatroom-sdk/SimpleSDK";
// 引用麦位管理
import { SeatManager } from 'chatroom-sdk/SetaManager';
// 引用麦位类型及常数
import * as seatTypes from 'chatroom-sdk/SeatTypes';
// SDK, config 配置
const config = {
appId = 0, // 申请账号的 app id
signKey = "", // 申请账号的 sign key
isTestEnv = true // 是否使用测试环境
};
const userId = uuid.v4();
const userId2 = uuid.v4();
const token = "";
// SDK, 构建新 SDK 对象
const simpleSDK = new SimpleSDK({ appId: config.appId, isTestEnv: config.isTestEnv });
// 麦位, 构建新麦位管理对象
const manager = new SeatManager({ userId: userId });
// SDK, 设置用户名
simpleSDK.setConfig({ idName: userId });
// 麦位, 设置麦位状态更新回调
manager.onSeatsCenterChange = (seatsCenter, isRemote) => {
if (isRemote) {
console.log("update from remote");
} else {
console.log("update from local");
}
// 麦位, 美化麦位状态, 方便调试和查看
const res = manager.beautiful(seatsCenter);
console.log(res);
// 麦位, 获取当前用户麦位状态
const currSeatStatus = manager.getCurrSeatStatus();
console.log(currSeatStatus);
if (!isRemote) {
const content = JSON.stringify(seatsCenter);
// 麦位, 当本地更新时, 用可靠消息发送新的麦位状态
return simpleSDK.sendReliableMessage(manager.messageType, JSON.stringify(content));
} else {
// 麦位, 返回空 resolve 至回调
return Promise.resolve(0);
}
}
// SDK, 添加可靠消息回调
simpleSDK.addOnRecvReliableMessage((type, seq, data) => {
if (!data) return;
const seatsCenter = JSON.parse(data as string);
if (!seatsCenter[seatTypes.SEATS_Status_KEY]) return;
manager.updateSeatsCenter(seatsCenter);
});
// SDK, 登录房间
await simpleSDK.login({ roomId, token });
const useSeatControls = async () => {
// 上麦
await manager.takeSeat(1);
// 下麦
await manager.leaveSeat();
console.log(manager.getCurrSeatStatus());
// 锁麦
await manager.lockSeat(0);
// 解锁麦位
await manager.unlockSeat(0);
// 关闭麦位
await manager.closeSeat(0);
// 打开麦位
await manager.openSeat(0);
// 静音麦位
await manager.muteSeat(0);
// 取消静音
await manager.unmuteSeat(0);
// 静音所有麦位
await manager.muteAllSeat();
// 取消所有麦位静音
await manager.unmuteAllSeat();
// 抱人上麦
await manager.pickupSeat({ [seatTypes.USER_ID_KEY]: userId2, [seatTypes.USER_NAME_KEY]: userId2 }, 2);
// 抱人下麦
await manager.pickupDownSeat({ [seatTypes.USER_ID_KEY]: userId2, [seatTypes.USER_NAME_KEY]: userId2 }, 2);
};
useSeatControls();
WebRTC SDK 方法的使用
- SimpleSDK 内置了一些常用方法
- login
- setConfig
- getRoomList
- startPreview
- stopPreview
- startPublish
- stopPublish
- playStream
- playStreams
- stopPlayStream
- stopPlayStreams
- sendReliableMessage
- addOnRecvReliableMessage
- 其他 SDK 方法可通过 simpleSDK.client 实例获取,具体可参考文档 https://doc-zh.zego.im/zh/1806.html
注意事项
- 当没用户在房间的时候,房间将会销毁,麦位状态将会重置
- 必须已经登录才可发送消息
- 移动端的播放麦位,必须渲染在页面上,并且触发点击才可自动播放
- 麦位管理只提供麦位状态和麦位操作,具体业务推拉流逻辑需要自行添加开发
1.0.0
5 years ago