有這樣乙個需求,想要通過package.jsonwebsocket
檢視某些日誌檔案的輸出(新的檔案,或者是新新增的內容,可以按行輸出),並且需要實時的,可採用系統的tail
並結合spawn
命令進行。
安裝
}
npm install
index.js
假設let fs = require('fs');
let spawn = require('child_process').spawn;
let watch = require('watch');
let uuid = require('uuid/v4');
const koa = require('koa'),
route = require('koa-route'),
websockify = require('koa-websocket');
let dataformat = require('./format.js');
const logpath = './logdir';
const port = 3001;
let wsclients = new map();
var tail = null;
let fun = function () catch (e)
}if (fs.existssync(`$/$`)) /$`).filter(name => ).map(function (file) /$/$`
});tail = spawn("tail", ["-f"].concat(filenames));
tail.stdout.on("data", function (data) catch (e)
}});
} else
};let precreatetime = 0;
watch.watchtree(logpath, function (f, curr, prev) else if (prev === null)
precreatetime = new date().gettime()
} }); return next(ctx);
}); let openid = ctx.url.split("/")[3];
ctx.websocket.close();
return;
}let clientid = uuid();
wsclients.set(clientid, function (data) catch (e) }})
}});
ctx.websocket.on('close', function () );
ctx.websocket.on('error', function () );
ctx.websocket.on('message', function (message) else if (message === 'id')
});}));
console.log(`files online tail listener port $`);
fun();
});
logdir
目錄結構如下
使用chrome的socket client即可檢視新增檔案或修改檔案的內容├── 20181023
│ └── 127.0.0.1
│ ├── 19_1.log
│ └── 20_2.log
可以說,由於呼叫系統的tail命令,基本是零延遲輸出的。
前端頁面與Nodejs使用websocket通訊
不要用瀏覽去直接去訪問websocket的位址!不要用瀏覽去直接去訪問websocket的位址!不要用瀏覽去直接去訪問websocket的位址!太傻了。就是頁面和服務端有個隱藏的通訊而已。前端1 例項化乙個ws物件 var wsuri ws websocket new websocket wsuri...
wireshark如何抓取WebSocket資料報
websocket目前在web端使用廣泛,可以使用websocket來傳輸資料,解決了web端無法跟伺服器維持高效的長鏈結的問題。什麼是websocket呢?websocket是一種瀏覽器與伺服器進行全雙工通訊的應用層協議。它基於 tcp 傳輸協議,並復用 http 的握手通道,可以在瀏覽器裡使用,...
nodejs之日誌管理
不管是什麼專案,日誌一直是乙個重要組成部分,它可以隨時供你檢視重要資料資訊,在nodejs中檢視實時日誌可以用pm2 logs檢視,如果使用者比較多怎麼辦了?如何將正常日誌和錯誤日誌分開?如何對每天的日誌歸檔?下面我們一起來看下。使用log4js建立日誌檔案,新建logs目錄,在目錄下新建chees...