私はNodeとExpress.jsに比較的慣れていません。ファイル自体に保存されている不規則な間隔で CSV データを行ごとにプッシュする websocket サーバーを作成しようとしています。CSV 構造は次のようなものです: [timeout [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]);
});
});
});
};
残念ながら、コメントアウトされたコードは機能しません - すべてのデータが行ごとにすぐに送信され、関数は一時停止しません