domi-server 0.1.3

DOMicile live-server library (Phase 2c).
Documentation
(() => {
  if (window.__DOMI_SERVER__) return;
  window.__DOMI_SERVER__ = true;
  const url = (location.protocol === 'https:' ? 'wss://' : 'ws://') + location.host + '/ws/events';
  let socket;
  function connect() {
    socket = new WebSocket(url);
    socket.addEventListener('open', () => dispatchEvent(new CustomEvent('domi-server-open')));
    socket.addEventListener('close', () => setTimeout(connect, 500));
    socket.addEventListener('error', () => setTimeout(connect, 500));
    socket.addEventListener('message', (ev) => {
      try {
        const msg = JSON.parse(ev.data);
        if (msg && msg.type === 'event' && msg.event) {
          dispatchEvent(new CustomEvent('domi-event', { detail: msg.event }));
        }
      } catch (_) {}
    });
  }
  window.DomiServer = {
    export() { return new Promise(() => {}); },
    subscribe(cb) { addEventListener('domi-event', (ev) => cb(ev.detail)); },
  };
  connect();
})();