cloudhub-electron-sdk
Version:
cloudhub-electron-sdk
316 lines (315 loc) • 18.9 kB
JavaScript
;
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;