git clone
npm install
npm start
All errors will be displayed. Currently the bugs at hand are:
- Request cannot access XHR because its within a webworker
- Superagent also cannot but it doesn't realize until the actual request happens
| node_modules | |
| *.log |
| <!doctype html> | |
| <html> | |
| <head> | |
| <script type="text/javascript" src="/one.js" ></script> | |
| </head> | |
| <body> | |
| <form> | |
| <p>URL: <input type="text" name="url" /></p> | |
| <p> | |
| <input type="radio" name="xhr" value="superagent" checked>SuperAgent | |
| <br> | |
| <input type="radio" name="xhr" value="request">Request | |
| </p> | |
| <p><button type="submit" >Make Get Request</button></p> | |
| </form> | |
| <div class="output"></div> | |
| <ul class="errors"></ul> | |
| </body> | |
| </html> |
| var work = require("webworkify"); | |
| var req = work(require("./worker-request")); | |
| var sa = work(require("./worker-superagent")); | |
| var form, output, text, errors; | |
| var errlist = function(e){ | |
| errors.innerHTML += "<li>"+e.message+"</li>"; | |
| }; | |
| var messlist = function(e){ | |
| if(e.data.event !== "result") return; | |
| if(e.data.error){ | |
| output.style.backgroundColor = "#F00"; | |
| output.style.color = "#FFF"; | |
| output.innerHTML = e.data.error.stack.replace(/\n/g,"<br/>"); | |
| }else{ | |
| output.style.backgroundColor = "#FFF"; | |
| output.style.color = "#000"; | |
| output.innerHTML = e.data.data; | |
| } | |
| }; | |
| req.addEventListener("message",messlist); | |
| sa.addEventListener("message",messlist); | |
| req.addEventListener("error",errlist); | |
| sa.addEventListener("error",errlist); | |
| window.addEventListener("load",function(){ | |
| errors = document.querySelector(".errors"); | |
| form = document.querySelector("form"); | |
| text = form.querySelector("input[name=url]"); | |
| form.onsubmit = function(e){ | |
| switch(form.querySelector("input[type=radio]:checked").value){ | |
| case "request": req.postMessage(text.value); break; | |
| case "superagent": sa.postMessage(text.value); break; | |
| } | |
| return false; | |
| }; | |
| output = document.querySelector(".output"); | |
| }); |
| { | |
| "name": "superagent-webworker", | |
| "version": "1.0.0", | |
| "description": "", | |
| "main": "server.js", | |
| "scripts": { | |
| "test": "echo \"Error: no test specified\" && exit 1", | |
| "start": "node server.js" | |
| }, | |
| "author": "formula1 <[email protected]> (https://github.com/formula1)", | |
| "license": "ISC", | |
| "dependencies": { | |
| "browserify": "latest", | |
| "express": "latest", | |
| "open": "0.0.5", | |
| "request": "^2.55.0", | |
| "superagent": "latest", | |
| "webworkify": "latest" | |
| } | |
| } |
| var express = require("express"); | |
| var browserify = require("browserify"); | |
| var open = require("open"); | |
| var app = express(); | |
| app.get("/one.js",function(req,res,next){ | |
| var b = browserify("./a.js") | |
| .bundle(); | |
| b.on("error",next); | |
| res | |
| .status(200) | |
| .set("Content-Type","application/javascript"); | |
| b.pipe(res); | |
| }); | |
| app.get("/",function(req,res,next){ | |
| res.sendFile(__dirname+"/a.html"); | |
| }); | |
| app.listen(8000,function(){ | |
| open("http://localhost:8000"); | |
| }); |
| var sa = require("superagent"); | |
| var request = require("request"); | |
| module.exports = function(self){ | |
| self.addEventListener("message",function(e){ | |
| request(e.data.data, function (error, response, body) { | |
| if(error){ | |
| return self.postMessage({ | |
| event:"result", | |
| error:e | |
| }); | |
| } | |
| self.postMessage({ | |
| event:"result", | |
| error:body | |
| }); | |
| }); | |
| }); | |
| }; |
| var sa = require("superagent"); | |
| module.exports = function(self){ | |
| self.addEventListener("message",function(e){ | |
| sa.get(e.data.data).end(function(e,res){ | |
| if(e){ | |
| return self.postMessage({ | |
| event:"result", | |
| error:e | |
| }); | |
| } | |
| self.postMessage({ | |
| event:"result", | |
| error:res.body | |
| }); | |
| }); | |
| }); | |
| }; |