요청에 대한 특정 매개 변수를 기록하고 온라인으로 확인할 수있는 페이지에 인쇄 할 수있는 모듈을 만들려고 시도하면 페이지에 socket.io
을 사용하여 최신 로그.NodeJS의 다음 이벤트 처리기에 요청 보내기
그리고이 모듈을 플러그인으로 사용하여이 모듈을 호출하고 초기화하면 추가 입구 점 /_logger
이 응용 프로그램에 추가됩니다. 일단 페이지를 방문하면 최신 로그가됩니다. 실시간으로 업데이트됩니다. 그래서 모듈은 요청을 가로 챌 수 있습니다
function setup(httpServer) {
//page
httpServer.on("request", function (request, response) {
var pathname = url.parse(request.url).pathname;
if (pathname === '/_logger') {
fs.readFile(__dirname + '/logger.html', (err, data) => {
response.writeHead(200, { 'Content-Type': 'text/html' });
response.write(data);
response.end();
});
}else{
// how to give up the control for this requset
}
});
var io = require('socket.io')(httpServer);
io.on('connection', function (socket) {
//TO BE DONE
socket.on('event', function (data) { });
socket.on('disconnect', function() { });
});
}
module.exports = {
setup: setup
}
사용법 :
var logger= require("./logger/index");
var server = require('http').createServer();
logger.setup(server);
server.on("request", function(req,res){
//Normal logic for different application
});
server.listen(3333);
지금 문제가 요청 된 URL이 없습니다
/_logger
되면, 나는이 요청의 제어를 해제해야한다는 것입니다.
if (pathname === '/_logger') {
//take control
}else{
// Nothing should be done here, it should go to the next request chain.
}
문서를 읽은 후, 나는 올바른 방법을 찾을 수 없습니다.
아이디어가 있으십니까?
내가 두려워의'logger' 모듈은 별도의 플러그인으로 작동합니다 아닙니다. 즉,'logger' 모듈은 un-invasion이어야합니다. – hguser
@hguser'logger.setup (server)'대신에 다음과 같이 logger 모듈로부터 핸들러를 export 할 수 있습니다 :'var logH = logger.handler; server.on ('request', 작성 ([logH, otherHandler]))'; – zeronone
@hguser'wrapHandler' 함수를 사용하여 간단한 핸들러를 특정 경로로 바인딩 할 수 있습니다. – zeronone