Search code examples
javascriptfirefoxfirefox-addontimeoutfirefox-addon-sdk

How set request timeout setting in firefox sdk?


I'm trying to make POST request from a Firefox addon

var Request = require("sdk/request").Request; 
Request({
 url: "http://127.0.0.1/api",
 content:    "test",
 onComplete: function (response) {
 console.error("onComplete " + response.status);
 }
}).post();

but onComplete never runs. How i may fix this? Set network.http.response.timeout = 5 does not work.


Solution

  • You can not do this with the addon SDK stuff. The SDK has no .timeout options.

    You can use nsIXMLHttpRequest directly for a workaround.

    var {XMLHttpRequest} = require("sdk/net/xhr/");
    var req = new XMLHttpRequest();
    // OR
    var {Cc, Ci} = require("chrome");
    var req = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"]
      .createInstance(Ci.nsIXMLHttpRequest);
    // AND
    req.timeout = 5;
    req.addEventListener("load", ...);
    req.addEventListener("timeout", ...);
    req.addEventListener("error", ...);
    ...