0
我有一個代碼跑了兩個小時,需要通過套接字發送結果。我已經完成了所有設置,並且第一次沒事。但是,第二次調用該函數時,它不再有效。爲了證明它,我迷上了我的功能區間:間隔發送文件套接字
var soc = require('socket.io-client');
var fs = require('fs');
var ss = require('socket.io-stream');
var jsonfile = require('jsonfile');
var calculationResultsFile = './publicdata/CalculationResults.json';
function sendFile(){
var calculationResultsFile = './publicdata/CalculationResults.json';
var socket = new soc('http://localhost:1234', {
'reconnection': false,
'reconnectionDelay': 1000,
'reconnectionDelayMax': 10000,
'reconnectionAttempts': 5
});
socket.on('connect', function() {
console.log('Sockets connected');
var stream = ss.createStream();
ss(socket).emit('sendData', stream, {name: 'jsonHourly'});
fs.createReadStream(calculationResultsFile).pipe(stream);
socket.on('completedstreamfile', function(){
console.log('File send. Closed socket.');
socket.close();
});
});
}
setInterval(function(){
console.log('Interval start');
sendFile()
}, 10000);
一些輸出:
Interval start
Sockets connected
File send. Closed socket.
Interval start
Interval start
Interval start
我想這是因爲SENDFILE功能不正常關閉。但是,在socket.close()之後使用return也不會。
編輯:進一步澄清;我需要這個的原因是因爲服務器可能會脫機或其他。如果我只在腳本啓動時建立連接,則不一致。
只是好奇你爲什麼每次關閉套接字?它部分地挫敗了websockets的目的。 –
也想到了這一點,但即使我把它打開也是一樣的。第一次後不發送。 – SecondLemon