2013-08-01 29 views
0

任何人都可以幫助我嗎?node.js連接並收聽json url

我試圖從一個JSON文件「example.json」 獲取數據,並保持listeing在任何更新的情況下,文件...

但是,由於某種原因,我不能讓它去工作....

任何想法/幫助?

server.js:

var app = require('http').createServer(handler), 
    io = require('socket.io').listen(app), 
    fs = require('fs'); 
app.listen(8080, 'fire.dev'); 

function handler(req, res) { 
    fs.readFile(__dirname + '/home', function(err, data) { 
     if (err) { 
      res.writeHead(500); 
      return res.end('Error loading home'); 
     } 

     res.writeHead(200); 
     res.end(data); 
    }); 
} 

io.sockets.on('connection', function(socket) { 
    fs.watch(__dirname + '/example.json', function(data) { 
     fs.readFile(__dirname + '/example.json', function(err, data) { 
      if (err) throw err; 

      JSON.parse(data); 
      console.log('============'); 
      console.log(data); 
     }); 
    }); 

    socket.addListener('end', function(result) { 
     socket.volatile.emit('notification', result); 
    }); 
}); 

HTML:

var socket = io.connect('fire.dev:8080'); 

socket.on('notification', function (data) { 
    $('.j-alert').fadeIn(2000); 
    document.title = document.title + ' (' + data.number + ')'; 
    $('.j-red-alert').html(data.number); 
}); 
+0

「*但是,由於某種原因,我可以」噸得到它的工作.... *「:更具體的東西?你會得到什麼錯誤? – Blender

+0

當試圖記錄數據我得到這樣的東西:和「socket.on('notification'.. 。「永不開火:/ – Darkagelink

回答

0

請不要介意,我得到它的工作...

var app = require('http').createServer(handler), 
    io = require('socket.io').listen(app), 
    fs = require('fs'), 
    homeFile = __dirname + '/home', 
    jsonFile = __dirname + '/home/data'; 
app.listen(8080, 'test.dev'); 

function handler(req, res) { 
    fs.readFile(homeFile, function(err, data) { 
     if (err) { 
      res.writeHead(500); 
      return res.end('Error loading home'); 
     } 

     res.writeHead(200); 
     res.end(data); 
    }); 
} 

io.sockets.on('connection', function(socket) { 
    fs.watchFile(jsonFile, function (curr, prev) { 
      console.log('the current mtime is: ' + curr.mtime); 
      console.log('the previous mtime was: ' + prev.mtime); 


     fs.readFile(jsonFile, function(err, data) { 
      if (err) throw err; 

      var data = JSON.parse(data); 
      socket.emit('notification', data); 
     }); 
    }); 
}); 
+0

我不認爲我可以」接受「我自己的回答:/ – Darkagelink

+0

你應該可以。它是左邊的複選標記圖標,靠近樂譜。 –