UNPKG

zby-live-sdk

Version:

This is a live SDK for weclassroom.

480 lines (459 loc) 11.8 kB
// 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} }); }, };