UNPKG

@bddh/starling-realtime-client

Version:

2 lines (1 loc) 3.55 kB
import{createClass as e,asyncToGenerator as t,classCallCheck as r,defineProperty as n,regeneratorRuntime as o,objectSpread2 as s,typeof as a}from"./_virtual/_rollupPluginBabelHelpers.js";import{v4 as c}from"uuid";import{createWebSocket as i}from"@bddh/starling-web-socket/es/create-web-socket";import u from"lodash/pick";import l from"lodash/omit";import p from"lodash/get";import{errorTypeEnum as d,CONNECT_MAIN_KEY as f,statusEnum as h,WS_STATUS_MAP as m}from"./interface.js";var k=function(k){function S(e){var a,k=this;r(this,S),n(this,"dhServerSocket",null),n(this,"socketClosingPromise",null),n(this,"url",void 0),n(this,"firstConnect",!0),n(this,"connectParams",null),n(this,"createSocket",(function(e){return(a=a||t(o().mark((function e(t){var r,n,s,a;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(k.connectParams=t,r=t.token,n=t.sessionId,s=t.onConnect,a=t.onDigitalHumanCallback,!k.socketClosingPromise){e.next=5;break}return e.next=5,k.socketClosingPromise;case 5:if(!k.dhServerSocket){e.next=8;break}return e.next=8,k.closeSocket();case 8:return e.abrupt("return",new Promise((function(e,t){var o=i(k.url,{reopen:p(k.connectParams,"reConnect",!0),keepAlive:"heartbeat",combine:function(e,t){return e&&t&&e.requestId===t.requestId},onOpen:function(){if(k.dhServerSocket=o,n&&k.firstConnect)return o.request({action:"RE_CONNECT",requestId:c(),body:JSON.stringify({token:r,sessionId:n})}).on((function(t,r){s(t),0!==t.code&&(r(),k.handleConnect()),e(o)})),void(k.firstConnect=!1);k.handleConnect()},onClose:function(){k.dhServerSocket=null,k.socketClosingPromise=null},onError:function(e){t(e)}});o.onReadyStateChange((function(e){0===e&&a&&a({status:h.DH_LIB_INIT}),a&&a({status:h.DH_LIB_FULL_STATUS,content:{type:"wsState",readyState:e,body:m[e]}})})),o.onMessage((function(e){var t=e.action;[d.TIMEOUT_EXIT,d.DISCONNECT_ALERT].includes(t)&&a&&a({status:h.DH_LIB_STATUS,content:{type:t}})})),o.open()})));case 9:case"end":return e.stop()}}),e)})))).apply(this,arguments)})),n(this,"closeSocket",t(o().mark((function e(){return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(k.dhServerSocket){e.next=2;break}return e.abrupt("return");case 2:return k.socketClosingPromise=k.dhServerSocket.close(),e.next=5,k.socketClosingPromise;case 5:k.dhServerSocket=null;case 6:case"end":return e.stop()}}),e)})))),n(this,"handleConnect",t(o().mark((function e(){var t,r,n,a,i,p;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(k.connectParams){e.next=2;break}return e.abrupt("return");case 2:if(t=k.connectParams,r=t.appId,n=t.appKey,a=t.token,i=t.parameters,p=t.onConnect,r||n||a){e.next=5;break}return e.abrupt("return");case 5:k.dhServerSocket&&k.dhServerSocket.request({action:"CONNECT",clientTs:(new Date).getTime(),requestId:c(),body:JSON.stringify(s(s({token:a,appId:r,appKey:n},u(k.connectParams,f)),{},{parameters:s(s({},l(i,["parameters"])),i&&i.parameters?i.parameters:{})}))}).on((function(e,t){p(e),0!==e.code&&t()}));case 6:case"end":return e.stop()}}),e)})))),this.url=e}return e(S,[{key:"sendMessage",value:function(e,r){return(k=k||t(o().mark((function e(t,r){var n;return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:try{this.dhServerSocket&&this.dhServerSocket&&this.dhServerSocket.request(t).on((function(e){r&&r(e)}))}catch(e){n="object"===a(t)&&"requestId"in t?t.requestId:c(),r&&r({code:-11,body:null,action:"RENDER_ERROR",requestId:n,message:JSON.stringify(e)})}case 1:case"end":return e.stop()}}),e,this)})))).apply(this,arguments)}}]),S}();export{k as default};