我的節點/回送服務器有一個零星的問題。我的設置如下:Node.js零星的'ECONNREFUSED'錯誤request.get
編輯:我的節點版本是v4.2.4,我在Windows 10 Professional上運行節點。
客戶端:
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
@migg我正在運行v4.2.4 – Oddball
嗯......你的參數被稱爲'callback',但你正在調用'cb'。也許你正在創建一個memleak,直到服務器拒絕連接? – migg