zby-live-sdk
Version:
This is a live SDK for weclassroom.
480 lines (459 loc) • 11.8 kB
JavaScript
// import {dabanDataReport} from './api';
// import util from '../util/util';
import {version, liveExt, logAddress} from '../config/config';
import toolApi from '../tool';
// import toolBaseApi from '../tool/base';
// import liveApi from '../live';
import defaultApi from '../default/extend';
// import zbyApi from '../zby-av-sdk/zby-av-sdk';
import zbysdk from '../zby-live-sdk';
import util from '../util/util';
const EM = window.EM;
let hasAddListener = false;
let baseData1 = null;
let baseData2 = null;
let st = 2;
let timestamp = null;
let coreSDKVersion = null;
let realSDKType = '';
const addListener = () => {
// EM 是寄宿于端的,浏览器中并不存在,为防止报错需要先进行能力检测
if (EM && !hasAddListener) {
hasAddListener = true;
EM.AddListener('framework', (event, data) => {
// if (data && data.indexOf(extensionId) > -1) {
// try {
// EMListenerId = JSON.parse(data)[extensionId];
// defaultApi.writeLog(`ZEGO::addListener-- EMListenerId: ${EMListenerId}`);
// } catch (error) {}
// }
if (!event || !data) {
return;
}
// console.log('framework',event,data);
let _data = JSON.parse(data);
switch (event) {
case 'SystemLocalTimeChange':
timestamp = Number(_data.server_time_diff);
console.log(`SystemLocalTimeChange:: server_time_diff: ${_data.server_time_diff} ${timestamp}`);
break;
};
})
}
};
addListener();
const getSystemInformation = () => {
if (EM) {
return new Promise((resolve, reject) => {
EM.system.GetSystemInformation((code, msg) => {
defaultApi.writeLog(`GetSystemInformation Code: ${code}\nMessage: ${msg}`);
resolve({
code,
msg,
});
});
});
}
}
const ReportLog = (logstore = 'live_log', args) => {
if (EM) {
// defaultApi.writeLog(`ReportLog event_name: ${args.lc.event_name}`);
return new Promise((resolve, reject) => {
let logStr = JSON.stringify(args);
EM.system.ReportLog(logstore, logStr, (code, msg) => {
defaultApi.writeLog(`ReportLog Code: ${code}\nMessage: ${msg}`);
logstore = undefined;
logStr = undefined;
resolve({
code,
msg,
});
});
});
}
};
const dataReport = async (args) => {
if (!window.zby_sdk_init_params) {
return false;
}
const {userId, institutionId, projectId, userName, role, roomId, teacherId, liveId, serviceStatus, classMode, liveType} = window.zby_sdk_init_params;
if (!userId || !institutionId) {
return false;
}
if(timestamp == undefined){
getSystemInformation().then(res => {
timestamp = Number(JSON.parse(res.msg).server_time_diff);
console.log('wolaile',timestamp);
}).catch ( e => {
// timestamp = 0;
console.log('timestamp11',e,timestamp);
});
} else {
console.log('timestamp12',timestamp);
}
if(!baseData1) {
console.log('baseData11',baseData1);
toolApi.getCommonData(liveExt.version).then(res => {
baseData1 = res.msg;
// console.log('baseData12',baseData1);
});
// console.log('baseData13',baseData1);
}
if (!baseData2) {
baseData2 = await zbysdk.getSDKVersion();
}
if (!coreSDKVersion) {
coreSDKVersion = await zbysdk.getSDKCoreVersion();
}
if (args.event_name === 'live_quality_hb') {
Object.assign(args, {service_status: serviceStatus});
st = 5;
} else {
st = 2;
}
// 公共字段
const args0 = {
bl:1,
bt:1,
ft:args.logstore? '300' : liveType,
st: st,
tid:'-',
uid: userId,
pid:liveId,
log_ver: '1.0.1',
guid: '-',
// js_version: version,
// class_type: 2
};
//基础信息
const args1 = {
role: role || 'student',
room_id: roomId,
js_version: version,
live_sdk_type: window.zbyAVSDK_init_sdk_type,
live_sdk_type_ex: realSDKType,
live_sdk_version: '-',
streamid: `${institutionId}_${roomId}_${userId}_1`
};
console.log('baseData14',baseData1);
if (baseData1) {
console.log('baseData15');
const {guid, tm_ext_version, zego_ext_version} = baseData1;
// console.log('hsg_bbh',baseData1, tm_ext_version, zego_ext_version);
Object.assign(window.zby_sdk_init_params, {guid});
Object.assign(args0, {guid});
Object.assign(args1, {live_sdk_version: window.zbyAVSDK_init_sdk_type == 'rtc'? tm_ext_version : zego_ext_version});
}
if (baseData2) {
// console.log('hsg_bbh',baseData2);
Object.assign(args1, {media_sdk_version: baseData2, media_core_sdk_version: coreSDKVersion});
}
if (args.event_name === 'sdk_change') {
baseData1 = null;
baseData2 = null;
coreSDKVersion = null;
}
const reportData = {
// 其他
// sdk_type: window.zbyAVSDK_init_sdk_type,
lid:++zbysdk.log_id,
stime: timestamp ? new Date().getTime() + timestamp : new Date().getTime(),
...args0,
// ...args1,
// ...args2,
// lc:JSON.stringify({...args1,...args})
lc:{...args1,...args}
};
// defaultApi.writeLog(`dataReport--${JSON.stringify(reportData)}`);
defaultApi.writeLog(`log_id--${zbysdk.log_id} event_name: ${args.event_name}`);
console.debug(`[${util.currentTimeString()}]--[zby-live-sdk]-- DataReport: ${JSON.stringify(reportData)}`);
ReportLog(args.logstore, reportData);
// dabanDataReport(reportData);
};
export default {
timestamp,
setRealSDKType(type) {
realSDKType = type;
},
// 心跳
heartbeat(args) {
dataReport({
event_name: 'live_quality_hb',
event_content:{...args}
});
},
//设备检测(音视频)
// deviceTest(args){
// dataReport({
// event_name: 'device_test',
// event_content:{...args}
// });
// },
//直播切换线路
sdkChange(args){
dataReport({
event_name: 'sdk_change',
event_content:{...args}
});
},
//老师静音/取消静音某学生
// toggleMic(args){
// dataReport({
// event_name: 'toggle_mic',
// ...args
// });
// },
//音视频连接
avConnect(args){
dataReport({
event_name: 'av_connect',
event_content:{...args}
});
},
//进入房间
joinRoom(args){
dataReport({
event_name: 'join_room',
event_content:{...args}
});
},
//进入房间结果
joinRoomResult(args){
dataReport({
event_name: 'join_room_result',
event_content:{...args}
});
},
//开始推流
startPublish(args){
dataReport({
event_name: 'start_publish',
event_content:{...args}
});
},
//推流结果
publishResult(args){
dataReport({
event_name: 'publish_result',
event_content:{...args}
});
},
//开始拉学生流
startPull(args){
dataReport({
event_name: 'start_pull',
event_content:{...args}
});
},
//拉流结果
pullResult(args){
dataReport({
event_name: 'pull_result',
event_content:{...args}
});
},
//停止拉学生流
stopPull(args){
dataReport({
event_name: 'stop_pull',
event_content:{...args}
});
},
//停止推流
stopPublish(args){
dataReport({
event_name: 'stop_publish',
event_content:{...args}
});
},
//退出教室
leaveRoom(args){
dataReport({
event_name: 'leave_room',
event_content:{...args}
});
},
splitState(args){
dataReport({
event_name: 'split_state',
event_content:{...args}
});
},
//设备状态变化
deviceChange(args){
dataReport({
event_name: 'device_change',
event_content:{...args}
});
},
//设备检测
setDevice(args){
dataReport({
event_name: 'set_device',
event_content:{...args}
});
},
firstVideoSize(args){
dataReport({
event_name: 'first_video',
event_content:{...args}
});
},
firstAudioSize(args){
dataReport({
event_name: 'first_audio',
event_content:{...args}
});
},
//学生按住发言按钮
startLianMai(args){
dataReport({
event_name: 'start_lianmai',
event_content:{...args}
});
},
//学生取消发言按钮时上报
endLianMai(args){
dataReport({
event_name: 'end_lianmai',
event_content:{...args}
});
},
//收到开麦消息上报
getStartLianMai(args){
dataReport({
event_name: 'get_start_lianmai',
event_content:{...args}
});
},
//收到关麦消息上报
getEndLianMai(args){
dataReport({
event_name: 'get_end_lianmai',
event_content:{...args}
});
},
setPullVoice(args){
dataReport({
event_name: 'set_pull_voice',
event_content:{...args}
});
},
// turnPushResult(args){
// dataReport({
// event_name: 'turn_push_result',
// event_content:{...args}
// });
// }
pomeloJoinRoom(args){
dataReport({
logstore:'online_class_log',
event_name: 'pomelo_join_room',
event_content:{...args}
});
},
pomeloInitGate(args){
dataReport({
logstore:'online_class_log',
event_name: 'pomelo_init_gate',
event_content:{...args}
});
},
pomeloInitChat(args){
dataReport({
logstore:'online_class_log',
event_name: 'pomelo_init_chat',
event_content:{...args}
});
},
pomeloInitWebSocket(args){
dataReport({
logstore:'online_class_log',
event_name: 'pomelo_init_websocket',
event_content:{...args}
});
},
pomeloSendMsg(args){
dataReport({
logstore:'online_class_log',
event_name: 'pomelo_send_msg',
event_content:{...args}
});
},
pomeloRecvMsg(args){
dataReport({
logstore:'online_class_log',
event_name: 'pomelo_recv_msg',
event_content:{...args}
});
},
initFinished(args){
dataReport({
event_name: 'init_finished',
event_content:{...args}
});
},
takeSnapShot(args){
dataReport({
event_name: 'take_snap_shot',
event_content:{...args}
});
},
remoteNetworkQuality(args){
dataReport({
event_name: 'remote_network_quality',
event_content:{...args}
});
},
localNetworkQuality(args){
dataReport({
event_name: 'local_network_quality',
event_content:{...args}
});
},
localConnectStatus(args){
dataReport({
event_name: 'local_connect_status',
event_content:{...args}
});
},
pushStreamError(){
},
pushStreamWarning(){
},
deviceError(args) {
dataReport({
event_name: 'device_error',
event_content:{...args}
});
},
startRecord(args) {
dataReport({
event_name: 'zby_start_record',
event_content:{...args}
});
},
stopRecord(args) {
dataReport({
event_name: 'zby_stop_record',
event_content:{...args}
});
},
joinRtcChannel(args) {
dataReport({
event_name: 'join_rtc_channel',
event_content:{...args}
});
},
/**
* @param {object} args
* @param {number} args.state - pomelo连接状态 1:连接成功 2:连接中断 3:重连成功 4:重连失败
* @param {string} args.desc - 连接状态描述,字符串
*/
pomeloState(args) {
dataReport({
event_name: 'pomelo_state',
event_content:{...args}
});
},
};