【发布时间】:2016-05-10 12:55:21
【问题描述】:
我的节点/环回服务器偶尔出现问题。我的设置如下:
编辑:我的节点版本是 v4.2.4,我在 Windows 10 专业版上运行节点。
客户端:
nw.js 客户端,它遍历本地文件系统并计算文件的 MD5 值。
-
使用
request.post,客户端以'fileHash: d41d8cd98f00b204e9800998ecf8427e'格式将文件的哈希发送到服务器(这只是一个示例哈希,我知道它是一个空文件)function checkHash (fileHash){ request.post({ headers: {'content-type' : 'application/x-www-form-urlencoded'}, url: 'http://localhost:3000/api/checkBoths/hashcheck', method: 'POST', form: { fileHash: fileHash } }, function(error, response, body){ if(error) { console.log(error); } else { console.log(response.statusCode, body); } }); }
服务器端:
在
localhost:3000运行的节点/环回服务器。hashCheck函数用于读取从客户端发布的数据并查询 MySQL 数据库以匹配哈希。-
如果哈希值存在于数据库中,来自服务器的响应格式为
goodResult : true,否则为goodResult : false。var request = require('request'); module.exports = function (CheckBoth) { var goodResult; CheckBoth.hashCheck = function (fileHash, cb) { requestGood(fileHash); function requestGood (fileHash) { request.get('http://127.0.0.1:3000/api/Goodhashes/' + fileHash + '/exists', function (error, response, body) { if (!error && response.statusCode == 200) { goodResult = JSON.parse(body).exists; } if (error) { console.error(error); } }); console.log(goodResult); } cb( goodResult); }; CheckBoth.remoteMethod( 'hashCheck', { accepts: {arg: 'fileHash', type: 'string'}, returns: [{arg: 'goodResult', type: 'string'}] } ); };
问题:
在响应中出现以下内容之前,服务器可以响应大约 1000 个查询:
{ [Error: connect ECONNREFUSED 127.0.0.1:3000]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 3000 }
我尝试在服务器代码中放入不同的回调,但这并没有什么不同。我想我可能应该限制对服务器的请求,但我不知道如何实现这一点。
任何帮助将不胜感激。
【问题讨论】:
-
你运行的是哪个版本的节点?
-
@migg 我正在运行 v4.2.4
-
嗯...您的参数称为
callback,但您调用的是cb。也许您正在使用它创建一个 memleak,直到服务器拒绝连接? -
@migg 哎呀...这实际上是我如何复制文件的错误。在我的实际代码中,它们都被称为 cb。我将编辑我的问题以反映这一点。感谢您指出这一点。
-
现在
badResult和mhrResult仍未定义。当您将 CheckBoth 注入到模块中时,但您在内部进行了更改,您可能仍然在泄漏内存。你应该调试你的应用消耗了多少内存。
标签: javascript mysql node.js loopbackjs nw.js