UNPKG

test-cloudhub-electron-sdk

Version:

cloudhub-electron-sdk

291 lines (290 loc) 16.5 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); /** * @module MessageController * @description 处理内部回调数据 * @author dangmeng * @date 2020-06-26 * */ const event_1 = require("../helpers/event"); const utils_1 = __importDefault(require("../helpers/utils")); const RoomController_1 = __importDefault(require("./RoomController")); const StreamController_1 = __importDefault(require("./StreamController")); const Renderer_1 = require("../Renderer"); const LoggerController_1 = __importDefault(require("./LoggerController")); const logger = new LoggerController_1.default('CloudHub-message-log'); class MessageController { apiCallback(RtcEngine) { RtcEngine.onEvent('connectionStateChanged', (state) => { logger.info(`onConnectionStateChanged state:${state}`); event_1.EventInner.trigger('onConnectionStateChanged', { state }); }); RtcEngine.onEvent('connectionlost', () => { logger.info('onConnectionLost'); event_1.EventInner.trigger('onConnectionLost'); }); RtcEngine.onEvent('requesttoken', () => { logger.info('onRequestToken'); event_1.EventInner.trigger('onRequestToken'); }); RtcEngine.onEvent('tokenPrivilegeWillExpire', (token) => { logger.info('onTokenPrivilegeWillExpire', token); event_1.EventInner.trigger('onTokenPrivilegeWillExpire', { token }); }); RtcEngine.onEvent('clientrolechanged', (state) => { logger.info(`onClientRoleChanged state:${state}`); event_1.EventInner.trigger('onClientRoleChanged', { state }); }); RtcEngine.onEvent('firstlocalvideoframe', (uid, width, height) => { logger.info(`onFirstLocalVideoFrame uid:${uid} width:${width} height:${height}`); event_1.EventInner.trigger('onFirstLocalVideoFrame', { width, height }); }); RtcEngine.onEvent('firstlocalaudioframe', () => { logger.info('onFirstLocalAudioFrame'); event_1.EventInner.trigger('onFirstLocalAudioFrame'); }); RtcEngine.onEvent('firstremotevideoframe', (uid, mediaType, width, height) => { logger.info(`onFirstRemoteVideoFrame uid:${uid} mediaType:${mediaType} width:${width} height:${height}`); event_1.EventInner.trigger('onFirstRemoteVideoFrame', { uid, mediaType, width, height }); }); RtcEngine.onEvent('firstremoteaudioframe', (uid) => { logger.info(`onFirstRemoteAudioFrame uid:${uid}`); event_1.EventInner.trigger('onFirstRemoteAudioFrame', { uid }); }); RtcEngine.onEvent('error', (err, msg) => { logger.info(`onError err:${err} msg:${msg}`); event_1.EventInner.trigger('onError', { err, msg }); }); RtcEngine.onEvent('chatMsg', (fromId, textMsg, extraData) => { logger.info(`onChatMsg fromId:${fromId} textMsg:${textMsg} extraData:${extraData}`); event_1.EventInner.trigger('onChatMsg', { fromId, textMsg, extraData: utils_1.default.strToJson(extraData) }); }); RtcEngine.onEvent('pubMsg', (msgId, msgName, fromId, toId, data, associatedUserId, associatedMsgId, ts, extraData, isHistory, seq) => { logger.info(`onPubMsg111 msgId:${msgId} msgName:${msgName} fromId:${fromId} toId:${toId} data:${data} associatedUserId:${associatedUserId} associatedMsgId:${associatedMsgId} ts:${ts} extraData:${extraData} isHistory:${isHistory} seq:${seq}`); event_1.EventInner.trigger('onPubMsg', { isHistory, data: utils_1.default.strToJson(data), extraData: utils_1.default.strToJson(extraData), associatedUserId, associatedMsgId, fromId, msgId, msgName, toId, ts, seq }); }); RtcEngine.onEvent('delMsg', (msgId, msgName, fromId, toId, associatedUserId, associatedMsgId, ts, data, seq) => { logger.info(`onDelMsg msgId:${msgId} msgName:${msgName} fromId:${fromId} toId:${toId} associatedUserId:${associatedUserId} associatedMsgId:${associatedMsgId} ts:${ts} data:${data} seq:${seq}`); event_1.EventInner.trigger('onDelMsg', { msgId, msgName, fromId, toId, associatedUserId, associatedMsgId, ts, data: utils_1.default.strToJson(data), seq }); }); RtcEngine.onEvent('serverTime', (serverts) => { logger.info(`onServerTime serverts:${serverts}`); event_1.EventInner.trigger('onServerTime', { serverts }); }); RtcEngine.onEvent('docAddr', (address, channelId) => { logger.info(`onDocAddr address:`, eval(address), 'channelId:', channelId); event_1.EventInner.trigger('onDocAddr', { address: eval(address), channelId }); }); RtcEngine.onEvent('setProperties', (userId, fromId, properties) => { logger.info(`onSetProperty userId:${userId} fromId:${fromId} properties:${properties}`); event_1.EventInner.trigger('onSetProperty', { userId, fromId, properties: utils_1.default.strToJson(properties) }); }); RtcEngine.onEvent('localUserEvicted', (reason) => { logger.info(`onLocalUserEvicted reason:${reason}`); event_1.EventInner.trigger('onLocalUserEvicted', { reason }); }); RtcEngine.onEvent('joinchannel', (channel, uid, elapsed) => { logger.info(`onJoinChannel channel:${channel} uid:${uid} elapsed:${elapsed}`); RoomController_1.default.setMyself({ uid }); event_1.EventInner.trigger('onJoinChannel', { channel, uid, elapsed }); }); RtcEngine.onEvent('rejoinchannel', (channel, uid, elapsed) => { logger.info(`onRejoinChannel channel:${channel} uid:${uid} elapsed:${elapsed}`); event_1.EventInner.trigger('onRejoinChannel', { channel, uid, elapsed }); }); RtcEngine.onEvent('localuserPerssionChanged', (type, hasPermission) => { logger.info(`onLocaluserPerssionChanged type:${type} hasPermission:${hasPermission}`); event_1.EventInner.trigger('onLocaluserPerssionChanged', { type, hasPermission }); }); RtcEngine.onEvent('recordMsg', (data) => { const { currTs, pauseDuration, recordDuration, recordState, startTs } = utils_1.default.strToJson(data); logger.info(`onRecordMsg currTs:${currTs} pauseDuration:${pauseDuration} recordDuration:${recordDuration} recordState:${recordState} startTs:${startTs}`); event_1.EventInner.trigger('onRecordMsg', { currTs, pauseDuration, recordDuration, recordState, startTs }); }); RtcEngine.onEvent('leavechannel', (states) => { logger.info(`onLeaveChannel states:${states}`); event_1.EventInner.trigger('onLeaveChannel', { states }); }); RtcEngine.onEvent('localVideoStateChanged', (state, error) => { logger.info(`onLocalVideoStateChanged state:${state} error:${error}`); event_1.EventInner.trigger('onLocalVideoStateChanged', { state, error }); }); RtcEngine.onEvent('localAudioStateChanged', (state, error) => { logger.info(`onLocalAudioStateChanged state:${state} error:${error}`); event_1.EventInner.trigger('onLocalAudioStateChanged', { state, error }); }); RtcEngine.onEvent('rtcstats', (stats) => { // logger.info(`onRtcStats stats:${stats}`) event_1.EventInner.trigger('onRtcStats', { stats }); }); RtcEngine.onEvent('networkquality', (uid, txQuality, rxQuality) => { // logger.info(`onNetworkQuality uid:${uid} txQuality:${txQuality} rxQuality:${rxQuality}`) event_1.EventInner.trigger('onNetworkQuality', { uid, txQuality, rxQuality }); }); RtcEngine.onEvent('videodevicestatechanged', (deviceId, deviceType, deviceState) => { logger.info(`onVideoDeviceStateChanged deviceId:${deviceId} deviceType:${deviceType} deviceState:${deviceState}`); event_1.EventInner.trigger('onVideoDeviceStateChanged', { deviceId, deviceType, deviceState }); }); RtcEngine.onEvent('audiodevicestatechanged', (deviceId, deviceType, deviceState) => { logger.info(`onAudioDeviceStateChanged deviceId:${deviceId} deviceType:${deviceType} deviceState:${deviceState}`); event_1.EventInner.trigger('onAudioDeviceStateChanged', { deviceId, deviceType, deviceState }); }); RtcEngine.onEvent('userjoined', (uid, properties, isHistory) => { logger.info(`onUserJoined uid:${uid} properties:${properties} isHistory:${isHistory}`); event_1.EventInner.trigger('onUserJoined', { isHistory, uid, properties: utils_1.default.strToJson(properties) }); }); RtcEngine.onEvent('useroffline', (uid) => { logger.info(`onUserOffline uid:${uid}`); event_1.EventInner.trigger('onUserLeaved', { uid }); }); RtcEngine.onEvent('remoteVideoStateChanged', (uid, sourceId, mediaType, streamId, state, reason) => { logger.info(`onRemoteVideoStateChanged uid:${uid} sourceId:${sourceId} mediaType:${mediaType} streamId:${streamId} state:${state} reason:${reason}`); let stream = StreamController_1.default.getStream(uid, utils_1.default.getMediaType(mediaType)); if (state === 0 && reason !== 5 && stream) { StreamController_1.default.delStream(uid, utils_1.default.getMediaType(mediaType)); } if (state === 1 && reason !== 6 && !stream) { StreamController_1.default.setStream(uid, utils_1.default.getMediaType(mediaType), { renderer: new Renderer_1.GlRenderer(), streamId }); } event_1.EventInner.trigger('onRemoteVideoStateChanged', { uid, state, mediaType, reason, sourceId }); }); RtcEngine.onEvent('remoteAudioStateChanged', (uid, state, reason) => { logger.info(`onRemoteAudioStateChanged uid:${uid} state:${state} reason:${reason}`); event_1.EventInner.trigger('onRemoteAudioStateChanged', { uid, state, reason, }); }); RtcEngine.onEvent('firstLocalMovieFrame', (uid, width, height, mediafile) => { logger.info(`onFirstLocalMovieFrame uid:${uid} width:${width} height:${height} mediafile:${mediafile}`); event_1.EventInner.trigger('onFirstLocalMovieFrame', { uid, width, height, mediafile }); }); RtcEngine.onEvent('localMovieStateChanged', (mediafile, state, errCode) => { logger.info(`onLocalMovieStateChanged mediafile:${mediafile} state:${state} errCode:${errCode}`); event_1.EventInner.trigger('onLocalMovieStateChanged', { mediafile, state, errCode, }); }); RtcEngine.onEvent('streamInjectStatus', (uid, sourceId, mediaType, streamId, status, attr) => { logger.info(`onStreamInjectStatus uid:${uid} sourceId:${sourceId} mediaType:${mediaType} streamId:${streamId} status:${status} attr:${attr}`); switch (status) { case 0: //进入 StreamController_1.default.setStream(uid, utils_1.default.getMediaType(mediaType), { renderer: new Renderer_1.GlRenderer(), streamId }); break; case 4: //销毁 StreamController_1.default.delStream(uid, utils_1.default.getMediaType(mediaType)); break; } event_1.EventInner.trigger('onStreamInjectStatus', { uid, mediaType, status, sourceId, attr: utils_1.default.strToJson(attr) }); }); RtcEngine.onEvent('streamInjectPos', (uid, sourceId, mediaType, streamId, pos) => { logger.info(`onStreamInjectPos uid:${uid} sourceId:${sourceId} mediaType:${mediaType} streamId:${streamId} pos:${pos}`); event_1.EventInner.trigger('onStreamInjectPos', { uid, mediaType, pos }); }); RtcEngine.onEvent('audiovolumeindication', (speakers, speakerNumber, totalVolume) => { // logger.info(`onAudioVolumeIndication speakers:${speakers} speakerNumber:${speakerNumber} totalVolume:${totalVolume}`) event_1.EventInner.trigger('onAudioVolumeIndication', { speakers, speakerNumber, totalVolume }); }); RtcEngine.onEvent('movieProgress', (mediaFile, pos, total) => { // logger.info(`onMovieProgress mediaFile:${mediaFile} pos:${pos} total:${total}`) event_1.EventInner.trigger('onMovieProgress', { mediafile: mediaFile, pos, total }); }); RtcEngine.onEvent('localvideostats', (stats) => { // logger.info(`onLocalVideoStats stats:${stats}`) event_1.EventInner.trigger('onLocalVideoStats', { stats }); }); RtcEngine.onEvent('localaudiostats', (stats) => { // logger.info(`onLocalAudioStats stats:${stats}`) event_1.EventInner.trigger('onLocalAudioStats', { stats }); }); RtcEngine.onEvent('remotevideostats', (stats) => { // logger.info(`onRemoteVideoStats stats:${stats}`) event_1.EventInner.trigger('onRemoteVideoStats', { stats }); }); RtcEngine.onEvent('remoteaudiostats', (stats) => { // logger.info(`onRemoteAudioStats stats:${stats}`) event_1.EventInner.trigger('onRemoteAudioStats', { stats }); }); RtcEngine.onEvent('lastmilequality', (quality) => { logger.info(`onLastmileQuality quality:${quality}`); event_1.EventInner.trigger('onLastmileQuality', { quality }); }); RtcEngine.onEvent('audioeffectfinished', (soundId) => { logger.info(`onAudioEffectFinished soundId:${soundId}`); event_1.EventInner.trigger('onAudioEffectFinished', { soundId }); }); } registerDeliverFrame(infos) { // logger.info('registerDeliverFrame', infos) for (let i = 0; i < infos.length; i++) { let { type, uid, streamId, header, ydata, udata, vdata } = infos[i]; if (!header || !ydata || !udata || !vdata) { logger.warn('Invalid data param : ' + infos); continue; } //如果是设备检测的话 需要单独处理一下 因为可能会在进入房间前检测 此时没有uid if (streamId === 'local:test') { const stream = StreamController_1.default.getStream('myself-device-test', 'device'); if (stream && stream.renderer) { this.drawFrame(stream.renderer, header, ydata, udata, vdata); } } else { uid = uid || RoomController_1.default.getMyself().uid; // uid不存在的话就是自己 const streams = StreamController_1.default.getUserStream(uid); const currentStream = streams.find((item) => item.streamId === streamId && item.renderer); if (currentStream) { this.drawFrame(currentStream.renderer, header, ydata, udata, vdata); } } } } drawFrame(renderer, header, ydata, udata, vdata) { renderer.drawFrame({ header, yUint8Array: ydata, uUint8Array: udata, vUint8Array: vdata }); } } exports.default = MessageController;