【问题标题】:my Node.js Application's reaction rate is very slow我的 Node.js 应用程序的反应速度很慢
【发布时间】:2016-10-31 07:47:59
【问题描述】:

首先,我不擅长说英语。

我正在尝试在 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');
                });

【问题讨论】:

  • 您需要向我们提供更多详细信息。如果您在$.get('/led/1/on'); 之前执行console.log,您看到它的速度有多快?如果它很慢那么你的问题在于浏览器中JS的执行速度。如果不是,那么可能是 HTTP GET 很慢(甚至可能是缓存问题?)。尝试计时(您的浏览器的调试控制台应该会有所帮助)。如果不是,那么服务器本身可能很慢,尝试计时,看看是什么让它变慢了。

标签: javascript ajax node.js raspberry-pi gpio


【解决方案1】:

res.send('ok') 添加到您的处理程序。浏览器正在等待对第一个按钮单击的响应并且永远不会得到它。这可能是造成延迟的原因。

【讨论】:

  • 非常感谢!它工作得很好。我不知道为什么,但我只是尝试添加 res.sendStatus(302),但不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 2016-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多