2016-10-31 29 views
0

まず、私は英語を話すのが良くありません。私のNode.jsアプリケーションの反応速度が非常に遅い

私は、Raspberry PiのFingersquaredに基づいてNode.jsとしてコードを書き込もうとしています。

私はRPi'GPIOを制御したいだけです。しかし、私がボタンをクリックすると、console.logは非常にゆっくりと表示されます(しかし、私が最初に各ボタンをクリックすると非常に迅速に反応します)。

私はCPU速度をチェックすると、それはちょうど正常です(2%未満) 。

私の責任は何ですか? :(

app.js

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')を追加します。ブラウザが最初のボタンのクリックに応答を待って、決してそれを取得しています。それはおそらく遅延を引き起こしているものです

+0

ありがとう!それは良い働きです。 なぜ私はres.sendStatus(302)を追加しようとしているのかわかりませんが、動作しません。 – ParkDyel

関連する問題