tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

worker.js (1012B)


      1 export async function worker_function() {
      2 
      3 let wt = null;
      4 
      5 async function processMessage(e) {
      6  const target = this;
      7 
      8  function respond(data) {
      9    target.postMessage(Object.assign(data, {rqid: e.data.rqid}));
     10  }
     11 
     12  // ORB will block errors (webtransport_url('custom-response.py?:status=404');)
     13  // so we need to try/catch
     14  try {
     15    switch (e.data.op) {
     16    case 'open': {
     17      wt = new WebTransport(e.data.url);
     18      await wt.ready;
     19      respond({ack: 'open'});
     20      break;
     21    }
     22 
     23    case 'openandclose': {
     24      wt = new WebTransport(e.data.url);
     25      await wt.ready;
     26      wt.close();
     27      await wt.closed;
     28      respond({ack: 'openandclose'});
     29      break;
     30    }
     31 
     32    case 'close': {
     33      wt.close();
     34      await wt.closed;
     35      respond({ack: 'close'});
     36      break;
     37    }
     38    }
     39  } catch(e) {
     40    respond({failed: true});
     41  }
     42 }
     43 
     44 self.addEventListener('message', processMessage);
     45 
     46 self.addEventListener('connect', ev => {
     47  // Shared worker case
     48  ev.ports[0].onmessage = processMessage;
     49 });
     50 }