Node.js 从文件读取时触发向客户端发送JSON数据
我有日志文件(1-2MB大小),我想使用node.js读取。多亏了本论坛的帮助,我使用了以下内容:Node.js 从文件读取时触发向客户端发送JSON数据,node.js,Node.js,我有日志文件(1-2MB大小),我想使用node.js读取。多亏了本论坛的帮助,我使用了以下内容: new lazy(fs.createReadStream(clientMessage.selectedFile)) .lines .forEach(function(line){ sendData(line,client,playBackSpeed);}); sendData函数本质上是一个解析器,使用开关逐行从日志文件收集数据。下面是sendData函数中该解析器的一个片段: swit
new lazy(fs.createReadStream(clientMessage.selectedFile))
.lines
.forEach(function(line){
sendData(line,client,playBackSpeed);});
sendData函数本质上是一个解析器,使用开关逐行从日志文件收集数据。下面是sendData函数中该解析器的一个片段:
switch (lineTokens[0]) //first token is the command idenitifier
{
case "$F":{ // heartbeat signal
var elapspedTimeIndex = 4, flagIndex = 5;
var heartBeat = "{\"heartBeat\": {\"elapsedTime\":"+ lineTokens[elapspedTimeIndex].trim() +", \"flag\":"+ lineTokens[flagIndex].trim() + "}}";
var now = new Date().getTime();
while(new Date().getTime() <= now + playBackSpeed) {} //sleep before we move on
client.send(heartBeat);
}
return;
}
}
switch(lineTokens[0])//第一个令牌是命令标识符
{
案例“$F”:{//心跳信号
var ElapsedTimeIndex=4,flagIndex=5;
var heartBeat=“{\'heartBeat\”:{\'elapsedTime\”:“+lineTokens[elapsedtimeIndex].trim()+”,“flag\”:“+lineTokens[flagIndex].trim()+“}}”;
var now=new Date().getTime();
while(new Date().getTime()将数据推送到FIFO缓冲区,并使用计时器事件发送数据
switch (lineTokens[0]) //first token is the command idenitifier
{
case "$F":{ // heartbeat signal
var elapspedTimeIndex = 4, flagIndex = 5;
var heartBeat = "{\"heartBeat\": {\"elapsedTime\":"+ lineTokens[elapspedTimeIndex].trim() +", \"flag\":"+ lineTokens[flagIndex].trim() + "}}";
client.queue.add(heartBeat);
}
return;
}
}
function checkQueue()
{
var msg = client.queue.pop();
if (!msg) return;
client.send(msg);
}
function setSpeed(newSpeed)
{
if (timerID)
clearInterval(timerID);
timerID = setInterval(checkQueue, playBackSpeed);
}
setSpeed(playBackSpeed);