UNPKG

zby-live-sdk

Version:

This is a live SDK for weclassroom.

98 lines (92 loc) 4.33 kB
import dict from '../util/dict'; import CHANNEL from './index'; import defaultApi from '../default'; import sdkCb from './sdk-cb'; import { userAndDeviceStatusInfo } from '../util/statsStore'; import dataReport from '../network/dataReport'; export default function(data, baseInfo) { try { dataReport.pomeloRecvMsg({data}); } catch(e) { console.error('pomeloRecvMsg_error',e); } switch (data.api) { case 'join': //通知业务层信息:有人进入房间 sdkCb.join(data); defaultApi.writeLog(`sdk notice user_join role: ${data.actorType} userId : ${data.actorId} userName: ${data.actorName}`); //如果本地是学生,就定向回应joinAck和addStream,让对方可以展示自己的视频 //定向回应joinAck和addStream,让对方可以展示自己的视频 //线路切换:本地学生和老师SDK类型不一致 if (window.target_sdk_type) { //存在target_sdk_type ,表示正在切换中,等待切换 defaultApi.writeLog(`changing sdk to ${window.target_sdk_type},ignore remote userId ${data.actorId} join msg`); break; } else { CHANNEL.sendJoinAck(baseInfo); CHANNEL.sendAddStream(baseInfo); CHANNEL.sendUpdateStreamDeviceStatus(Object.assign({}, baseInfo, { deviceType: dict.getDeviceTypeKey('video'), deviceStatus: dict.getDeviceStatusKey(userAndDeviceStatusInfo && userAndDeviceStatusInfo.camera ? 'open' : 'closed'), })); CHANNEL.sendUpdateStreamDeviceStatus(Object.assign({}, baseInfo, { deviceType: dict.getDeviceTypeKey('audio'), deviceStatus: dict.getDeviceStatusKey(userAndDeviceStatusInfo && userAndDeviceStatusInfo.microPhone ? 'open' : 'closed'), })); } break; case 'joinAck': //首先确认对方的消息是针对本人进行回应的(信道处理)定向接收 //通知业务层信息:有人在房间的回应 sdkCb.joinAck(data); defaultApi.writeLog(`sdk notice user_response role: ${data.actorType} userId : ${data.actorId} userName: ${data.actorName}`); break; case 'addStream': defaultApi.writeLog({ changing_sdk_type: window.target_sdk_type, local_sdk_type: window.current_sdk_type, remote_sdk_type: data.sdkName, isIgnore: !!window.target_sdk_type || (data.sdkName && (window.current_sdk_type !== data.sdkName)) }); if (!!window.target_sdk_type || (data.sdkName && (window.current_sdk_type !== data.sdkName))) { defaultApi.writeLog(`recv different sdk addStream,:target ${window.target_sdk_type},ignore remote userId ${data.actorId} msg`); break; } //处理接收的群发消息和定向消息(已经由消息服务器处理过) //通知展示收到的视频流数据 sdkCb.addStream(data); defaultApi.writeLog(`sdk notice remote_video_ready : current_sdk_type: ${window.current_sdk_type}, zbyAVSDK_type: ${window.zbyAVSDK_init_sdk_type}, role: ${data.actorType} userId : ${data.actorId} userName: ${data.actorName}`); break; case 'removeStream': if (data.sdkName && (window.current_sdk_type !== data.sdkName)) { break; } //处理接收的群发removeStream消息 //通知移除收到的视频流数据 sdkCb.removeStream(data); defaultApi.writeLog(`sdk notice remote_video_removed ,streamUrl ${data.streamUrl}, role: ${data.actorType} userId : ${data.actorId} userName: ${data.actorName} `); break; case 'updateStreamDeviceStatus': /** * @data.streamType: 1视频 / 2麦克风 * @data.status: 1打开 / 2关闭 * @CONTROL.role: '1' 老师收流 / '2' 学生收流 * */ //通知业务层信息 sdkCb.updateStreamDeviceStatus(data); defaultApi.writeLog(`sdk notice device_status role: ${data.actorType} userId : ${data.actorId} userName: ${data.actorName} deviceType : ${dict.devicesMap.get(parseInt(data.streamType))} deviceStatus: ${dict.devicesStatusMap.get(parseInt(data.status))}`); break; case 'leave': //通知业务层信息 sdkCb.leave(data); defaultApi.writeLog(`sdk notice user_leave role: ${data.actorType} userId : ${data.actorId} userName: ${data.actorName}`); break; default: break; } }