@nethesis/phone-island
Version:
NethVoice CTI Phone Island
3 lines (2 loc) • 2.1 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../transport.js"),s=require("../contrib/yeast.js"),t=require("../util.js"),r=require("./websocket-constructor.browser.js"),i=require("../../../../engine.io-parser/build/esm/encodePacket.browser.js");require("../../../../engine.io-parser/build/esm/commons.js"),require("../../../../engine.io-parser/build/esm/contrib/base64-arraybuffer.js");const o="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class n extends e.Transport{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),s=this.opts.protocols,i=o?{}:t.pick(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(i.headers=this.opts.extraHeaders);try{this.ws=r.usingBrowserWebSocket&&!o?s?new r.WebSocket(e,s):new r.WebSocket(e):new r.WebSocket(e,s,i)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let s=0;s<e.length;s++){const t=e[s],o=s===e.length-1;i.encodePacket(t,this.supportsBinary,(e=>{try{r.usingBrowserWebSocket&&this.ws.send(e)}catch(e){}o&&r.nextTick((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=s.yeast()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}check(){return!!r.WebSocket}}exports.WS=n;
//# sourceMappingURL=websocket.js.map