leafx
Version:
WebSocket Client & Utilities
2 lines (1 loc) • 1.11 kB
JavaScript
import{a as m}from"./chunk-PQNTNJEH.mjs";import u from"isomorphic-ws";import v from"mitt";function o(...c){console.log("[LEAF]",...c)}function y(c,e={matchTypeOn:"type"}){let r=new u(c),d=[],s=v(),E=(t,n=!1)=>{try{return JSON.parse(t.data.toString())}catch(a){return n&&console.error(a),{[e.matchTypeOn]:"unrecognized"}}},l=!1,g=0;return r.addEventListener("open",t=>{var n;l=!0,e.debug&&o("Connection opened."),(n=e.onOpen)==null||n.call(e,t),s.emit("open",t)}),r.addEventListener("close",t=>{var n;l=!1,e.debug&&o("Connection closed."),(n=e.onClose)==null||n.call(e,t),s.emit("close",t)}),r.addEventListener("message",t=>{var a;let n=E(t,e.debug);g++,e.debug&&o("New message."),(a=e.onMessage)==null||a.call(e,n),n[e.matchTypeOn]&&s.emit(n[e.matchTypeOn],n),s.emit("message",n)}),r.addEventListener("error",t=>{e.debug&&o(`Error: ${t.message}.`),s.emit("error",t)}),{raw:r,isConnected(){return l},messageCount(){return g},close(){r.close()},on:s.on,off:s.off,clear:s.all.clear,handleNotSent(){for(;d.length;){let t=d.shift();r.send(t)}},send(t){r.readyState===1?r.send(m(t)):d.push(m(t))}}}export{y as create};