我正在使用electron.js创建一个应用程序,我已经达到了一个需要发出http请求来调用php的地步。开始时的响应时间很短,应用程序在接收数据之前失败。然后我将timeOut放到HTTP路径上,以便服务器响应的等待时间增加。问题esque就好像timeOut不是,不等待指示的那个。
你知道解决这个问题的方法吗?
var http = require('http');
var options = {
timeout: 50000,
host: localStorage.getItem('server'),
port: localStorage.getItem('port'),
path: localStorage.getItem('directori') + '?nosession=1&call=ciberFiSessio&numSerie='+ localStorage.getItem("pc")
};
http.get(options, function(res) {
alert("hola");
if (res.statusCode == 200){
//reinicia();
res.on('data', function (chunk) {
str = chunk;
alert(str);
var myJSON = JSON.parse(str);
//alert(myJSON.fi);
if(parseInt(myJSON.fi)==0){
alert("Hi ha hagut un problema!");
}else{
reinicia();
}
});
}else{
alert("El lloc ha caigut!");
alert(res.statusCode);
}
}).on('error', function(e) {
alert("Hi ha un error: " + e.message);
});
答案 0 :(得分:0)
使用node-fetch
库,它支持更复杂的选项,也可以使用Promises,这是设计异步应用程序的现代方法。
https://www.npmjs.com/package/node-fetch
支持的选项(来自文档,包括timeout
)
{
method: 'GET'
, headers: {} // request header. format {a:'1'} or {b:['1','2','3']}
, redirect: 'follow' // set to `manual` to extract redirect headers, `error` to reject redirect
, follow: 20 // maximum redirect count. 0 to not follow redirect
, timeout: 0 // req/res timeout in ms, it resets on redirect. 0 to disable (OS limit applies)
, compress: true // support gzip/deflate content encoding. false to disable
, size: 0 // maximum response body size in bytes. 0 to disable
, body: empty // request body. can be a string, buffer, readable stream
, agent: null // http.Agent instance, allows custom proxy, certificate etc.
}