UNPKG

cloudhub-electron-sdk

Version:

cloudhub-electron-sdk

316 lines (315 loc) 18.9 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const event_1 = require("../helpers/event"); const utils_1 = __importDefault(require("../helpers/utils")); const Room_1 = __importDefault(require("./Room")); const Stream_1 = __importDefault(require("./Stream")); const Renderer_1 = require("../Renderer"); const log_1 = __importDefault(require("../helpers/log")); class MessageController { apiCallback(RtcEngine) { RtcEngine.onEvent('connectionStateChanged', (state) => { log_1.default.info(`onConnectionStateChanged state:${state}`); event_1.EventInner.trigger('onConnectionStateChanged', { state }); }); RtcEngine.onEvent('connectionlost', () => { log_1.default.info('onConnectionLost'); event_1.EventInner.trigger('onConnectionLost'); }); RtcEngine.onEvent('requesttoken', () => { log_1.default.info('onRequestToken'); event_1.EventInner.trigger('onRequestToken'); }); RtcEngine.onEvent('tokenPrivilegeWillExpire', (token) => { log_1.default.info('onTokenPrivilegeWillExpire', token); event_1.EventInner.trigger('onTokenPrivilegeWillExpire', { token }); }); RtcEngine.onEvent('clientrolechanged', (state) => { log_1.default.info(`onClientRoleChanged state:${state}`); event_1.EventInner.trigger('onClientRoleChanged', { state }); }); RtcEngine.onEvent('firstlocalvideoframe', (width, height, deviceID) => { log_1.default.info(`onFirstLocalVideoFrame uid:${deviceID} width:${width} height:${height}`); event_1.EventInner.trigger('onFirstLocalVideoFrame', { width, height }); }); RtcEngine.onEvent('firstlocalaudioframe', () => { log_1.default.info('onFirstLocalAudioFrame'); event_1.EventInner.trigger('onFirstLocalAudioFrame'); }); RtcEngine.onEvent('firstremotevideoframe', (uid, mediaType, streamId, width, height) => { log_1.default.info(`onFirstRemoteVideoFrame uid:${uid} mediaType:${mediaType} streamId:${streamId} width:${width} height:${height}`); event_1.EventInner.trigger('onFirstRemoteVideoFrame', { uid, mediaType, streamId, width, height }); }); RtcEngine.onEvent('firstremoteaudioframe', (uid) => { log_1.default.info(`onFirstRemoteAudioFrame uid:${uid}`); event_1.EventInner.trigger('onFirstRemoteAudioFrame', { uid }); }); RtcEngine.onEvent('error', (err, msg) => { log_1.default.info(`onError err:${err} msg:${msg}`); event_1.EventInner.trigger('onError', { err, msg }); }); RtcEngine.onEvent('chatMsg', (fromId, textMsg, extraData) => { log_1.default.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) => { log_1.default.info(`onPubMsg 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) => { log_1.default.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) => { log_1.default.info(`onServerTime serverts:${serverts}`); event_1.EventInner.trigger('onServerTime', { serverts }); }); RtcEngine.onEvent('docAddr', (address, channelId) => { log_1.default.info(`onDocAddr address:`, address, utils_1.default.strToJson(address), 'channelId:', channelId); event_1.EventInner.trigger('onDocAddr', { address: utils_1.default.strToJson(address), channelId }); }); RtcEngine.onEvent('setProperties', (userId, fromId, properties) => { log_1.default.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) => { log_1.default.info(`onLocalUserEvicted reason:${reason}`); event_1.EventInner.trigger('onLocalUserEvicted', { reason }); }); RtcEngine.onEvent('joinchannel', (channelId, uid, elapsed) => { log_1.default.info(`onJoinChannel uid:${uid} elapsed:${elapsed} channelId: ${channelId}`); Room_1.default.setMyself({ uid }); Room_1.default.setChannelId(channelId); event_1.EventInner.trigger('onJoinChannel', { uid, elapsed, channelId }); }); RtcEngine.onEvent('rejoinchannel', (uid, elapsed, channelId) => { log_1.default.info(`onRejoinChannel uid:${uid} elapsed:${elapsed} channelId: ${channelId}`); event_1.EventInner.trigger('onRejoinChannel', { uid, elapsed, channelId }); }); RtcEngine.onEvent('localuserPerssionChanged', (type, hasPermission) => { log_1.default.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); log_1.default.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) => { log_1.default.info(`onLeaveChannel states:${states}`); event_1.EventInner.trigger('onLeaveChannel', { states }); }); RtcEngine.onEvent('localVideoStateChanged', (state, error, deviceId) => { log_1.default.info(`onLocalVideoStateChanged state:${state} error:${error} deviceId:${deviceId}`); event_1.EventInner.trigger('onLocalVideoStateChanged', { state, error, deviceId }); }); RtcEngine.onEvent('localvideosizechanged', (width, height, deviceId) => { log_1.default.info(`onLocalvideosizechanged width:${width} height:${height}, deviceID:${deviceId}`); event_1.EventInner.trigger('onLocalvideosizechanged', { width, height, deviceId }); }); RtcEngine.onEvent('remotevideosizechanged', (uid, mediaType, streamId, width, height) => { log_1.default.info(`onRemotevideosizechanged uid:${uid} mediaType:${mediaType}, streamId:${streamId},width:${width} height:${height}`); event_1.EventInner.trigger('onRemotevideosizechanged', { uid, mediaType, streamId, width, height }); }); RtcEngine.onEvent('localAudioStateChanged', (state, error) => { log_1.default.info(`onLocalAudioStateChanged state:${state} error:${error}`); event_1.EventInner.trigger('onLocalAudioStateChanged', { state, error }); }); RtcEngine.onEvent('rtcstats', (stats) => { log_1.default.debug(`onRtcStats stats:${stats}`); event_1.EventInner.trigger('onRtcStats', { stats }); }); RtcEngine.onEvent('networkquality', (uid, txQuality, rxQuality) => { log_1.default.debug(`onNetworkQuality uid:${uid} txQuality:${txQuality} rxQuality:${rxQuality}`); event_1.EventInner.trigger('onNetworkQuality', { uid, txQuality, rxQuality }); }); RtcEngine.onEvent('videodevicestatechanged', (deviceId, deviceType, deviceState) => { log_1.default.info(`onVideoDeviceStateChanged deviceId:${deviceId} deviceType:${deviceType} deviceState:${deviceState}`); event_1.EventInner.trigger('onVideoDeviceStateChanged', { deviceId, deviceType, deviceState }); }); RtcEngine.onEvent('audiodevicestatechanged', (deviceId, deviceType, deviceState) => { log_1.default.info(`onAudioDeviceStateChanged deviceId:${deviceId} deviceType:${deviceType} deviceState:${deviceState}`); event_1.EventInner.trigger('onAudioDeviceStateChanged', { deviceId, deviceType, deviceState }); }); RtcEngine.onEvent('userjoined', (uid, properties, isHistory, fromChannelId) => { log_1.default.info(`onUserJoined uid:${uid} properties:${properties} isHistory:${isHistory}`); event_1.EventInner.trigger('onUserJoined', { isHistory, uid, properties: utils_1.default.strToJson(properties), fromChannelId }); }); RtcEngine.onEvent('useroffline', (uid, reason) => { log_1.default.info(`onUserOffline uid:${uid} reason:${reason}`); event_1.EventInner.trigger('onUserLeaved', { uid, reason }); }); RtcEngine.onEvent('remoteVideoStateChanged', (uid, mediaType, streamId, state, reason, streamInfo) => { log_1.default.info(`onRemoteVideoStateChanged uid:${uid} mediaType:${mediaType} streamId:${streamId} state:${state} reason:${reason} streamInfo:${streamInfo}`); let stream = Stream_1.default.getStream(streamId); if (state === 0 && reason !== 5 && stream) { Stream_1.default.delStream(streamId); } if (state === 1 && !stream) { Stream_1.default.setStream(streamId, { renderer: new Renderer_1.GlRenderer(), streamId, isLocal: false, viewId: '' }); } event_1.EventInner.trigger('onRemoteVideoStateChanged', { uid, state, mediaType, reason, streamId, streamInfo: utils_1.default.strToJson(streamInfo), }); }); RtcEngine.onEvent('remoteAudioStateChanged', (uid, state, reason) => { log_1.default.info(`onRemoteAudioStateChanged uid:${uid} state:${state} reason:${reason}`); event_1.EventInner.trigger('onRemoteAudioStateChanged', { uid, state, reason, }); }); RtcEngine.onEvent('firstLocalMovieFrame', (width, height, mediafile) => { log_1.default.info(`onFirstLocalMovieFrame width:${width} height:${height} mediafile:${mediafile}`); event_1.EventInner.trigger('onFirstLocalMovieFrame', { width, height, mediafile }); }); RtcEngine.onEvent('localMovieStateChanged', (mediafile, state, errCode) => { log_1.default.info(`onLocalMovieStateChanged mediafile:${mediafile} state:${state} errCode:${errCode}`); event_1.EventInner.trigger('onLocalMovieStateChanged', { mediafile, state, errCode, }); }); RtcEngine.onEvent('playAvFromLibraryStatus', (uid, sourceId, mediaType, streamId, status, attr) => { log_1.default.info(`onPlayAvFromLibraryStatus uid:${uid} sourceId:${sourceId} mediaType:${mediaType} streamId:${streamId} status:${status} attr:${attr}`); switch (status) { case 0: Stream_1.default.setStream(streamId, { renderer: new Renderer_1.GlRenderer(), streamId, isLocal: false, viewId: '' }); break; case 4: Stream_1.default.delStream(streamId); break; } event_1.EventInner.trigger('onPlayAvFromLibraryStatus', { uid, mediaType, status, sourceId, attr: utils_1.default.strToJson(attr), streamId }); }); RtcEngine.onEvent('playAvFromLibraryPos', (uid, sourceId, mediaType, streamId, pos) => { log_1.default.info(`onPlayAvFromLibraryPos uid:${uid} sourceId:${sourceId} mediaType:${mediaType} streamId:${streamId} pos:${pos}`); event_1.EventInner.trigger('onPlayAvFromLibraryPos', { uid, mediaType, pos }); }); RtcEngine.onEvent('audiovolumeindication', (speakers, speakerNumber, totalVolume) => { log_1.default.debug(`onAudioVolumeIndication speakers:${speakers} speakerNumber:${speakerNumber} totalVolume:${totalVolume}`); event_1.EventInner.trigger('onAudioVolumeIndication', { speakers, speakerNumber, totalVolume }); }); RtcEngine.onEvent('movieProgress', (mediaFile, pos, total) => { log_1.default.debug(`onMovieProgress mediaFile:${mediaFile} pos:${pos} total:${total}`); event_1.EventInner.trigger('onMovieProgress', { mediafile: mediaFile, pos, total }); }); RtcEngine.onEvent('localvideostats', (stats) => { log_1.default.debug(`onLocalVideoStats stats:`, stats); event_1.EventInner.trigger('onLocalVideoStats', { stats }); }); RtcEngine.onEvent('localaudiostats', (stats) => { log_1.default.debug(`onLocalAudioStats stats:`, stats); event_1.EventInner.trigger('onLocalAudioStats', { stats }); }); RtcEngine.onEvent('remotevideostats', (stats) => { log_1.default.debug(`onRemoteVideoStats stats:`, stats); event_1.EventInner.trigger('onRemoteVideoStats', { stats }); }); RtcEngine.onEvent('remoteaudiostats', (stats) => { log_1.default.debug(`onRemoteAudioStats stats:`, stats); event_1.EventInner.trigger('onRemoteAudioStats', { stats }); }); RtcEngine.onEvent('sharedWindowClosed', (windowId) => { log_1.default.debug(`onSharedWindowClosed windowId:${windowId}`); event_1.EventInner.trigger('onSharedWindowClosed', { windowId }); }); RtcEngine.onEvent('lastmilequality', (quality) => { log_1.default.info(`onLastmileQuality quality:${quality}`); event_1.EventInner.trigger('onLastmileQuality', { quality }); }); RtcEngine.onEvent('audioeffectfinished', (soundId) => { log_1.default.info(`onAudioEffectFinished soundId:${soundId}`); event_1.EventInner.trigger('onAudioEffectFinished', { soundId }); }); RtcEngine.onEvent('channelMediaRelayStateChanged', (targetChannelId, state, code) => { log_1.default.info(`onChannelMediaRelayStateChanged targetChannelId:${targetChannelId},state: ${state}, code: ${code}`); event_1.EventInner.trigger('onChannelMediaRelayStateChanged', { targetChannelId, state, code }); }); RtcEngine.onEvent('serverForceCloseChannel', (channelId, code) => { log_1.default.info(`onServerForceCloseChannel channel:${channelId}, code: ${code}`); event_1.EventInner.trigger('onServerForceCloseChannel', { channelId, code }); }); RtcEngine.onEvent('historyDataReady', () => { log_1.default.info(`onHistoryDataReady`); event_1.EventInner.trigger('onHistoryDataReady'); }); RtcEngine.onEvent('volumeIndication', (deviceId) => { log_1.default.info(`onVolumeIndication`); event_1.EventInner.trigger('onVolumeIndication', { deviceId }); }); RtcEngine.onEvent('localPublishFallbackToAudioOnly', (isFallbackOrRecover, deviceId) => { log_1.default.info(`localPublishFallbackToAudioOnly isFallbackOrRecover:${isFallbackOrRecover}, deviceId: ${deviceId}`); event_1.EventInner.trigger('onLocalPublishFallbackToAudioOnly', { isFallbackOrRecover, deviceId }); }); RtcEngine.onEvent('remoteSubscribeFallbackToAudioOnly', (uid, type, streamID, isFallbackOrRecover) => { log_1.default.info(`remoteSubscribeFallbackToAudioOnly uid:${uid}, isFallbackOrRecover: ${isFallbackOrRecover}`); event_1.EventInner.trigger('onRemoteSubscribeFallbackToAudioOnly', { uid, type, streamID, isFallbackOrRecover }); }); } registerDeliverFrame(infos) { const channelId = Room_1.default.getChannelId(); const RtcChannels = Room_1.default.getRtcChannels(); for (let i = 0; i < infos.length; i++) { let { cid, type, uid, streamId, header, ydata, udata, vdata } = infos[i]; log_1.default.debug(`registerDeliverFrame: streamId:${streamId},uid:${uid}, cid:${cid}`); if (!header || !ydata || !udata || !vdata) { log_1.default.warn('Invalid data param : ' + infos); continue; } const stream = Stream_1.default.getStream(streamId); if (stream && stream.renderer) { this.drawFrame(stream.renderer, header, ydata, udata, vdata); } } } drawFrame(renderer, header, ydata, udata, vdata) { renderer.drawFrame({ header, yUint8Array: ydata, uUint8Array: udata, vUint8Array: vdata }); } } exports.default = MessageController;