서버의 응용 프로그램에서 30 초마다 업데이트되는 json 파일이 있습니다. 아래에 주어진대로 webjocket (socket.io)을 통해이 json 파일을 제공하기 위해 nodejs 용 작은 서버 스크립트를 작성했습니다.nodejs websocket 스크립트의 fs 모듈에 JSON 파일 입력 오류가 발생했습니다.
var app = require('http').createServer();
var io = require('socket.io')(app);
var fs = require('fs');
app.listen(8081, '127.0.0.1');
io.on('connection', function(socket) {
fs.readFile('/tmp/live-info', 'utf8', function (err, data) {
if (err) throw err;
firstDataObj = JSON.parse(data);
socket.emit('alert', firstDataObj);
});
});
var prObj;
setInterval(function(){
fs.readFile('/tmp/live-info', 'utf8', function (err, data) {
if (err) throw err;
data = JSON.parse(data);
scTime = data.schedulerTime;
delete data.schedulerTime;
if (JSON.stringify(prObj) !== JSON.stringify(data)) {
prObj = data;
console.log(prObj.current.name, io.engine.clientsCount);
prObj.schedulerTime = scTime;
io.emit('alert', prObj);
delete prObj.schedulerTime;
} else {
console.log("No change", prObj.current.name, "Total connections: ", io.engine.clientsCount);
}
});
}, 21100);
당신이 볼 수 있듯이, 스크립트는 주기적으로 JSON 파일의 변경 사항을 확인하고 (타임 스탬프 제외) 내용의 변화가 발견 될 경우 구문 분석 된 객체를 방출합니다.
pm2를 사용하여 서버에서 nodejs 프로세스를 관리하고 있습니다. 모든 것이 잘 작동하지만 반복뿐만 아니라 클라이언트에서 발견 눈에 띄는 틈이 없습니다
SyntaxError: Unexpected end of JSON input
at Object.parse (native)
at /var/www/scheduleio/server.js:15:25
at tryToString (fs.js:449:3)
at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:436:12)
로그에 다음과 오류를 얻고있다. 그러나, 나는이 로그를 매일 200 개가 넘고, 스크립트가 어떤 식 으로든 향상 될 수 있다면 (이 스크립트가 내 첫 번째 스크립트이므로)이 오류를 수정하는 방법을 알고 싶습니다.