tor-browser

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

sjs_long-polling-server.sjs (890B)


      1 "use strict";
      2 
      3 const key = "blocked-response";
      4 function setResponse(response) {
      5   setObjectState(key, response);
      6 }
      7 
      8 function getResponse() {
      9   let response;
     10   getObjectState(key, v => {
     11     response = v;
     12   });
     13   return response;
     14 }
     15 
     16 function handleRequest(request, response) {
     17   const { queryString } = request;
     18   if (!queryString) {
     19     // The default end point will return a blocked response.
     20     // The response object will be stored and will be released
     21     // when "?unblock" is called.
     22     response.processAsync();
     23     response.setHeader("Content-Type", "text/plain", false);
     24     response.write("Begin...\n");
     25     setResponse(response);
     26   } else if (queryString == "unblock") {
     27     // unblock the pending response
     28     getResponse().finish();
     29     setResponse(null);
     30 
     31     // and return synchronously.
     32     response.setHeader("Content-Type", "text/plain");
     33     response.write("ok");
     34   }
     35 }