2016-10-31 1 views
0

첫째, 나는 영어로 말하기에 좋지 않습니다.내 Node.js 응용 프로그램의 반응 속도가 매우 느립니다.

나는 라스베리 파이에 Fingersquared을 기반으로 Node.js로 코드를 작성하려고합니다.

그래서 RPi'GPIO를 제어하고 싶습니다. 그러나 버튼을 클릭하면 console.log이 매우 느리게 표시되거나 전혀 표시되지 않습니다. (처음에는 각 버튼을 클릭 할 때 매우 빠르게 반응합니다.)

CPU 속도를 확인하면 정상입니다 (2 % 미만). .

내 잘못은 무엇입니까? :(

는 브라우저가 첫 번째 단추 클릭에 대한 응답을 기다리는 중입니다.

var express = require('express') 
, routes = require('./routes') 
, http = require('http') 
, path = require('path') 
, gpio_led = require('./routes/led'); 

var app = express(); 

app.configure(function(){ 
    app.set('port', process.env.PORT || 52237); 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'jade'); 
    app.use(express.favicon()); 
    app.use(express.logger('dev')); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(app.router); 
    app.use(express.static(path.join(__dirname, 'public'))); 
}); 

app.configure('development', function(){ 
    app.use(express.errorHandler()); 
}); 

app.get('/', routes.index); 
app.get('/led/:num/:switch', function(req,res){ 
     var num = req.params.num 
      , sw = req.params.switch; 

     console.log('LED ' + num + ' is ' + sw + '.'); 
     //gpio_led(num,sw); 
}) 


http.createServer(app).listen(app.get('port'), function(){ 
    console.log("Express server listening on port " + app.get('port')); 
}); 

index.jade

extends layout 

block content 
     .row 
       .six.columns.centered 
         .panel 
           .row 
             h4.text-center LED_01 
             .six.columns.text-center 
               a.button.large.right.LED1_ON ON 
             .six.columns 
               a.button.large.left.LED1_OFF OFF 
           .row 
             hr 
             h4.text-center LED_02 
             .six.columns 
               a.button.large.right.LED2_ON ON 
             .six.columns 
               a.button.large.left.LED2_OFF OFF 
           .row 

     script(type='text/javascript') 
       $('.LED1_ON').on('click', function(){ 
         $.get('/led/1/on'); 
       }); 
       $('.LED1_OFF').on('click', function(){ 
         $.get('/led/1/off'); 
       }); 
+0

'$ .get ('/ led/1/on ') 앞에'console.log'를 쓰면, 얼마나 빠릅니다. 너는 그것을 본다? 느린 그때 너의 문제는이다 브라우저에서 JS의 실행 속도. 그렇지 않다면 HTTP GET이 느릴 수도 있습니다 (캐시 문제 일 수도 있습니다). 타이밍을 시도해보십시오 (브라우저의 디버그 콘솔이 도움이 될 것입니다). 그렇지 않다면 서버 자체가 느려질 수 있으므로 시간을 측정하고 느려지는 것을 확인하십시오. –

답변

1

이 핸들러에 res.send('ok') 추가 app.js과를 얻을 수 없다. 지연을 일으키는 원인 일 가능성이 높습니다.

+0

고마워요! 일하는 게 좋아. 이유를 모르지만 res.sendStatus (302)를 추가하려고했지만 작동하지 않습니다. – ParkDyel

관련 문제