【发布时间】:2013-07-18 08:19:07
【问题描述】:
我对 Node 和 Express.js 比较陌生。我正在尝试创建一个 websocket 服务器以不规则的间隔推送 CSV 数据,这些数据存储在文件本身中,一行一行地。 CSV 结构是这样的: [超时[ms],data1,data2,data3 ...]
我已经成功创建了一个与客户端通信的 websocket 服务器。
我正在寻找有效执行以下操作的最佳解决方案: 1.读取CSV文件的一行 2.用WebSockets发送一行 3.暂停读取存储在行的第一个值的一段时间 4. 间隔结束后继续读取,返回步骤1。
到目前为止,我已经做到了这一点(请随意完全丢弃我的代码,因为它可能非常错误 - 正如我所说,我是新手。看起来 pause() 没有做任何事情。
var $ = require('jquery')
,csv = require('csv');
exports.index = function(server){
var io = require('socket.io').listen(server);
io.sockets.on('connection', function (socket) {
socket.on('startTransmission', function(msg) {
csv()
.from.path('C:/dev/node_express/csv/test.csv', { delimiter: ',', escape: '"' })
.on('record', function(row,index){
var rowArray = $.parseJSON(JSON.stringify(row));
var json = {},
that = this;
$.each(rowArray, function(i,value){
json[keys[i]] = value;
});
socket.emit('transmitDataData', json);
//this.pause(); //I guess around here is where I'd like to pause
// setTimeout(function(){
// that.resume(); //and resume here after the timeout, stored in the first value (rowArray[0])
// }, rowArray[0]);
});
});
});
};
不幸的是,注释掉的代码不起作用 - 所有数据都立即发送,逐行发送,函数不会暂停
【问题讨论】:
-
有什么理由使用jquery。您没有在此处操作任何 DOM 元素。
-
不,没有——我之前在做实验,忘记删除了。感谢您指出,但这并不能解决问题。
-
暂停和恢复不起作用吗?究竟是什么问题?该代码看起来应该可以工作(如果您取消注释暂停代码)
-
不幸的是,注释掉的代码不起作用。我会更新问题。
标签: node.js csv express websocket