我们在尝试制作的网站上遇到了一些困难。该网站有一个Javascript前端和后端。后端使用socket.io通过渠道处理https请求。一切正常,但是当我们加载测试时,它会非常慢。在我们将它与5种不同的设备一起使用之前,该网站崩溃了。最终它显示了econn重置(请参阅下面的错误处理程序)。
//Doesn't stop server after crashing
process.on('uncaughtException', function (err) {
console.error(err.stack);
console.log("Node NOT Exiting...");
var datetime = new Date();
fs.appendFile('log.txt', "\n\r"+datetime+"\n\r"+err.stack, function (err) {
});
});
我们还有一些错误处理代码,但此代码会自动启动服务器的所有用户,导致不显示任何结果。对于实际上与服务器断开连接的用户(因此并非所有其他用户),我们希望这只会出现。
请参阅我们的https请求代码:
return new Promise(function(resolve,reject)
{
var options = {
host: hostUrl,
port: 443,
path: path,
method: method,
dataType: "json",
headers: {
accept: '*/*'
}
};
var req = https.request(options, function(res) {
var result = '';
res.on('data', function(chunk){
result += chunk;
});
res.on('end', function(){
//Only send result back when its in json format
if(!result || result.indexOf('application/json') !== 0)
{
// preserve newlines, etc - use valid JSON
result = result.replace(/\\n/g, "\\n")
.replace(/\\'/g, "\\'")
.replace(/\\"/g, '\\"')
.replace(/\\&/g, "\\&")
.replace(/\\r/g, "\\r")
.replace(/\\t/g, "\\t")
.replace(/\\b/g, "\\b")
.replace(/\\f/g, "\\f");
// remove non-printable and other non-valid JSON chars
result = result.replace(/[\u0000-\u0019]+/g,"");
resolve(exstractDataForNewTemplate(JSON.parse(result)); //Make sure the results fit in the same JSON with the addToTemplate function!
}
else
{
reject(null);
}
});
});
req.end();
req.on('error', function(e) {
console.error(e);
reject(null);
});
});
我们想知道如何通过改进现有的https请求或使用https请求替代方案来解决此问题。欢迎提出建议。