Javascript 使用node.js和socket.io向用户显示实时数据

Javascript 使用node.js和socket.io向用户显示实时数据,javascript,node.js,couchdb,real-time,socket.io,Javascript,Node.js,Couchdb,Real Time,Socket.io,我希望优化/升级我们的web应用程序,从传统的PHP/MySQL,到更高效的技术。我一直在研究node.js、socket.io和CouchDB,它们看起来很有希望,但我希望在为我们想要的选择最佳技术方面得到一些建议和帮助 因此,要概述当前所做的工作… 我们有捕获数据并将其发送到FTP服务器(通过.txt文件)的设备。PHP脚本每5分钟运行一次,扫描FTP以查找设备发送的.txt文件。这些文件的内容被插入MySQL数据库,而.txt文件被删除。另一个每15分钟运行一次的PHP脚本将整理数据库中的

我希望优化/升级我们的web应用程序,从传统的PHP/MySQL,到更高效的技术。我一直在研究node.js、socket.io和CouchDB,它们看起来很有希望,但我希望在为我们想要的选择最佳技术方面得到一些建议和帮助

因此,要概述当前所做的工作…

我们有捕获数据并将其发送到FTP服务器(通过.txt文件)的设备。PHP脚本每5分钟运行一次,扫描FTP以查找设备发送的.txt文件。这些文件的内容被插入MySQL数据库,而.txt文件被删除。另一个每15分钟运行一次的PHP脚本将整理数据库中的数据(例如,最后一小时的总和),并生成一个XML文档,该文档由闪存拨号读取

显然,这里有很多问题,而且远不是一个实时解决方案,这正是我们的目标。我们想要的解决方案是,不知何故,它可以检测txt文件何时上传到FTP,然后只处理数据(而不是有一个设定的运行间隔)。数据仍然需要添加到数据库中,并在添加到数据库后由前端读取。闪光灯将被完全移除,因为它有点…滴答

有了node.js和websockets(socket.io)等令人兴奋的新技术,我相信我们可以大大改进这个过程!我知道Ajax能够做类似的事情,但听说它与Web套接字相比有相当高的开销。我还不清楚数据库如何与node.js一起工作,更不用说我们所追求的最佳选项了


谢谢

Node可以很好地使用NoSQL(尤其是基于JSON的NoSQL),但由于它们是处理Node中大多数数据库的模块,这些数据库是异步的并返回javascript对象,如果您更愿意使用MySQL,我不会拒绝使用它

这是一个数据库不可知论的提纲

var fs = require('fs');  //to watch the FTP
var db = require('db');  //your choice of db
var express = require('express'); //http server
var io = require('socket.io'); //for realtime data push
var app = express.createServer(); //create http server
/*...usual express implementation...*/
app.listen(80);
var socket = io.listen(app); 
db.connect( ..., start );
function checkForFiles () {
  fs.readdir( FTPpath, sendFilesToDB );
};
function sendFilesToDB ( err, files ) {
  if( files.length === 0 ) {
    return checkForFiles();
  }
  db.insert( fileToQuery( files.pop() ), function () {
    sendFilesToDB( err, files );
  });
}
function fileToQuery ( file ) {
  ...
  return query;
}
function start () {
  checkForFiles();
  setTimeout( checkData, 1000 );
}
function checkData () {
  db.query( '....', function ( err, data ) {
    socket.broadcast( processData( data ) );
    setTimeout( checkData, 1000 );
  }
}
function processData (data) {
  ...
  return data;
}

听起来像是一个计划,我对MySQL很满意,但我很乐意放弃它,改用NoSQL,如果它能提高速度和效率的话……原谅我的无知,我是nodejs的新手……它似乎每1秒都在不断调用check data函数……这是个好主意吗?不是每一秒,它都在进行处理,等待一秒钟,然后重复。