Sto usando express-ws https://www.npmjs.com/package/express-ws (API che aiuta a creare server per client express e websocket).express-ws come controllare periodicamente un evento personalizzato e agire automaticamente
app.ws('/', function(ws, req) {
console.log("New connection")
if (content.length > 0) {
console.log(content)
ws.send(content)
}
ws.on('message', function(msg, flags) {
console.log("Received "+ msg);
});
ws.on('data', function(msg, flags) {
var data = []; // List of Buffer objects
res.on("data", function(chunk) {
data.push(chunk); // Append Buffer object
console.log(data)
})
})
});
Ora, come si può vedere con il codice di cui sopra, ogni volta che viene creata una connessione controlla la lunghezza dei contenuti e lo invia al cliente conetent se più di 0.
seguito il codice del router, su richiesta web, aggiorna la file. Problema con questo se qualche tempo dopo la creazione della connessione se questo file è stato modificato, questa connessione non è al corrente e quindi la funzione di invio non viene chiamata. Ho anche provato fs.watch ma non sono in grado di farlo funzionare.
router.post('/run_restart', function(req, res, next) {
text = '{"to_do": "run_test", "devices":"all", "argv": { "test": "' + req.body.cmd + '", "cycles": "' + req.body.cycles + '", "awake_for": "' + req.body.wt + '" }}'
path = process.env['HOME']+'/Desktop/automation/Stressem/StressemWeb/bin/task.txt'
fs.writeFile(path, text)
res.render('home.jade', { title: 'Stressem' });
});
fs.watch(file, function (event) {
fs.stat(file, function (err, stats) {
if(stats.size>80){
console.log("Event: " + event);
fs.readFile(file, 'utf8', function (err, data) {
if (err) throw err;
content = data.toString();
});
}
});
Quello che vorrei è ogni volta che il file viene aggiornato, ws.send può essere chiamato per uno della connessione websocket.
Grazie per voi rtime guardare in questo. Ma il problema rimane lo stesso. Come posso chiamare questa funzione per una connessione particolare? –
controlla questo http://stackoverflow.com/questions/9935920/how-to-write-a-node-js-function-that-waits-for-an-event-to-fire-before-returnin – bmavus