trtc-sdk-v5
Version:
Tencent Cloud RTC SDK for Web
1 lines • 6.65 kB
JavaScript
var __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,r,t)=>r in e?__defProp(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,__spreadValues=(e,r)=>{for(var t in r||(r={}))__hasOwnProp.call(r,t)&&__defNormalProp(e,t,r[t]);if(__getOwnPropSymbols)for(var t of __getOwnPropSymbols(r))__propIsEnum.call(r,t)&&__defNormalProp(e,t,r[t]);return e},__spreadProps=(e,r)=>__defProps(e,__getOwnPropDescs(r)),__decorateClass=(e,r,t,o)=>{for(var s,a=o>1?void 0:o?__getOwnPropDesc(r,t):r,i=e.length-1;i>=0;i--)(s=e[i])&&(a=(o?s(r,t,a):s(a))||a);return o&&a&&__defProp(r,t,a),a},__publicField=(e,r,t)=>__defNormalProp(e,"symbol"!=typeof r?r+"":r,t),roomIValidate={properties:{roomId:{type:"number"},strRoomId:{type:"string"}}},StartValidateRule={name:"option",required:!0,properties:__spreadProps(__spreadValues({},roomIValidate.properties),{userId:{type:"string"}})},UpdateValidateRule={name:"option",required:!0,properties:{updateList:{type:"array",required:!0,arrayItem:{required:!0,type:"object",properties:__spreadProps(__spreadValues({},StartValidateRule.properties),{userId:{required:!1,type:"string"},muteAudio:{type:"boolean"},muteVideo:{type:"boolean"},muteSubStream:{type:"boolean"}})}}}},StopValidateRule={name:"option",properties:__spreadValues({},roomIValidate.properties)},isFunction=e=>"function"==typeof e,RETRY_STATE_NOT_START=0,RETRY_STATE_STARTED=1,RETRY_STATE_STOPPED=2;function promiseRetry({retryFunction:e,settings:r,onError:t,onRetrying:o,onRetryFailed:s,onRetrySuccess:a,context:i}){return function(...d){const{retries:n=5,timeout:c=1e3}=r;let p=0,l=-1,u=RETRY_STATE_NOT_START;const _=async(r,m)=>{const R=i||this;try{const t=await e.apply(R,d);p>0&&a&&a.call(this,p),p=0,r(t)}catch(e){const a=()=>{clearTimeout(l),p=0,u=RETRY_STATE_STOPPED,m(e)},i=()=>{u!==RETRY_STATE_STOPPED&&p<(isFunction(n)?n():n)?(p++,u=RETRY_STATE_STARTED,isFunction(o)&&o.call(this,p,a),l=window.setTimeout(()=>{l=-1,_(r,m)},isFunction(c)?c(p):c)):(a(),isFunction(s)&&s.call(this,e))};isFunction(t)?t.call(this,{error:e,retry:i,reject:m,retryFuncArgs:d,retriedCount:p}):i()}};return new Promise(_)}}var retry_default=promiseRetry,retryingMap=new WeakMap;function addPromiseRetry({settings:e={retries:5,timeout:2e3},onError:r,onRetrying:t,onRetryFailed:o}){return function(s,a,i){const d=retry_default({retryFunction:i.value,settings:e,onError({error:e,retry:t,reject:o,retryFuncArgs:i}){var d;r?r.call(this,e,()=>{var r;(null==(r=retryingMap.get(s))?void 0:r.has(a))?t():o(e)},o,i):(null==(d=retryingMap.get(s))?void 0:d.has(a))?t():o(e)},onRetrying(e,r){var o;isFunction(t)&&t.call(this,e,r),(null==(o=retryingMap.get(s))?void 0:o.has(a))&&(retryingMap.get(s).get(a).stopRetry=r)},onRetryFailed:o});return i.value=function(...e){const r=retryingMap.get(s);return r?r.set(a,{args:e}):retryingMap.set(s,new Map([[a,{args:e}]])),d.apply(this,e).finally(()=>{var e;return null==(e=retryingMap.get(s))?void 0:e.delete(a)})},i}}var _CrossRoom=class e{constructor(e){this.core=e,__publicField(this,"disableRandomCall",!0),__publicField(this,"connectedRoomIdSet",new Set),__publicField(this,"updateSeq",0),__publicField(this,"_log"),this._log=this.core.log.createChild({id:`${this.getAlias()}`})}getName(){return e.Name}getAlias(){return"crs-r"}getGroup(e){var r;const t=(null==e?void 0:e.userId)||(null==(r=null==e?void 0:e.updateList)?void 0:r[0].userId)||"";return t||(e?e.updateList?String(e.updateList[0].roomId)||e.updateList[0].strRoomId||"":String(e.roomId)||e.strRoomId||"":"*")}getValidateRule(e){switch(e){case"start":return StartValidateRule;case"update":return UpdateValidateRule;case"stop":return StopValidateRule}}async start({roomId:e,strRoomId:r,userId:t}){const{RtcError:o,ErrorCode:s}=this.core.errorModule;if(!this.core.room.sendSignalMessage)throw new o({code:s.ENV_NOT_SUPPORTED});const a=e||r;try{const e=await this.core.room.sendSignalMessage({command:"connect_other_room",responseCommand:String(8209),data:{roomId:a,userId:t,localRoomId:t?void 0:this.core.room.roomId},retries:3});if(0!==e.data.code)throw new o({code:s.SERVER_ERROR,extraCode:e.data.code,message:e.data.message})}catch(e){if(e.code!==this.core.errorModule.CoreErrorCode.API_CALL_ABORTED)throw e}t||this.connectedRoomIdSet.add(a)}async update({updateList:e}){var r;const{RtcError:t,ErrorCode:o}=this.core.errorModule;if(!this.core.room.sendSignalMessage)throw new t({code:o.ENV_NOT_SUPPORTED});const s=e.find(e=>e.userId)?0:1;try{const a=await this.core.room.sendSignalMessage({command:"update_other_room_forward_mode",responseCommand:String(8213),data:{seq:++this.updateSeq,operationType:s,updateList:e.map(({roomId:e,strRoomId:r,userId:t,muteAudio:o,muteVideo:s,muteSubStream:a})=>({roomId:e||r,userId:t,muteAudio:o,muteVideo:s,muteSubStream:a}))},retries:3});if(a.data.data.expectSeq)return this.updateSeq=a.data.data.expectSeq,this.update({updateList:e});if(0!==a.data.code)throw new t({code:o.SERVER_ERROR,extraCode:a.data.code,message:a.data.message});if((null==(r=a.data.data.errorList)?void 0:r.length)>0)throw new t({code:o.UNKNOWN_ERROR,message:a.data.data.errorList[0].message})}catch(e){if(e.code!==this.core.errorModule.CoreErrorCode.API_CALL_ABORTED)throw e}}async stop({roomId:e,strRoomId:r}={}){const t=e||r;if(t)await this.doStop(t);else if(this.connectedRoomIdSet.size>0)for(const e of[...this.connectedRoomIdSet.values()])await this.doStop(e);else await this.doStop()}async doStop(e){const{RtcError:r,ErrorCode:t}=this.core.errorModule;if(!this.core.room.sendSignalMessage)throw new r({code:t.ENV_NOT_SUPPORTED});try{const o=await this.core.room.sendSignalMessage({command:"disconnect_other_room",responseCommand:String(8211),data:{roomId:e,localRoomId:this.core.room.roomId},retries:3});if(0!==o.data.code)throw new r({code:t.SERVER_ERROR,extraCode:o.data.code,message:o.data.message})}catch(e){if(e.code!==this.core.errorModule.CoreErrorCode.API_CALL_ABORTED)throw e}this.connectedRoomIdSet.delete(e)}destroy(){}};__publicField(_CrossRoom,"Name","CrossRoom"),__decorateClass([addPromiseRetry({settings:{retries:3,timeout:1e3},onRetrying(e){this._log.warn(`retry start: ${e}`)}})],_CrossRoom.prototype,"start",1),__decorateClass([addPromiseRetry({settings:{retries:3,timeout:1e3},onRetrying(e){this._log.warn(`retry update: ${e}`)}})],_CrossRoom.prototype,"update",1);var CrossRoom=_CrossRoom,index_default=CrossRoom;export{index_default as default};export{CrossRoom};