账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    express 响应频繁超时?
    20
    0

    为了方便测试人员查看APP接口请求和响应报文,通过使用express写了个小程序,点击APP时可以时时在终端下输出请求和响应报文。

    以iOS为例,在通信封装的请求处和响应处分别调用express实现的接口,将请求和响应报文以POST参数形式传递出去,在终端上打印出来。

    遇到的问题:
    APP端请求两三个接口以后,终端这边请求和响应就没反应了,半天打印不出来,
    最终输出 POST / - - ms - - ,好像是超时了。
    现在只能control+c退出服务,再重启服务,再请求接口会很快有响应。

    本人对node了解不是很深,这样频繁退出,重启服务很麻烦,
    有哪位大佬对类似问题有经验还望指教,感谢!

    var express = require('express');
    var router = express.Router();
    var bodyParser = require('body-parser');
    
    router.use(bodyParser.json());
    router.use(bodyParser.urlencoded({ extended: true }));
    
    
    router.post('/', function (req, res, next) {
      
      var bodyString = JSON.stringify(req.body)
      
      //判断是请求透传
      if (req.body.request) {
        console.log('请求:');
        console.log(bodyString);
        console.log(' ');
      }
    
      //判断是响应透传
      if (req.body.response) {
        console.log('响应:');
        console.log(bodyString);
        console.log(' ');
      }
    })
    
    module.exports = router;
    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 黑夜执笔 普通会员 1楼

      在Express中,如果你的HTTP请求响应频率过高,可能会导致服务器超时。这主要是由于Express的无限循环功能导致的。无限循环功能会在一个请求中一直运行,直到它被请求解决。

      要解决这个问题,你可以尝试以下几种方法:

      1. 使用try-catch语句捕获错误并进行处理。这可以帮助你避免无限循环并允许你发送请求。

      javascript app.get('/myroute', function(req, res) { try { // 这里是你的请求代码 } catch (err) { res.status(500).send(err); } });

      1. 使用setTimeout或setInterval函数来设置一个定时器,这样当请求响应时,程序会检查请求是否已经超时。如果超时,程序将停止请求。

      javascript app.get('/myroute', function(req, res) { setTimeout(function() { if (req.query.timeout) { clearTimeout(req.query.timeout); } // 这里是你的请求代码 }, req.query.timeout); });

      1. 如果你的请求是异步的,那么你可能需要使用Promise或async/await来处理。这样,即使请求响应延迟,程序也不会立即停止。

      javascript app.get('/myroute', async function(req, res) { try { // 这里是你的请求代码 } catch (err) { res.status(500).send(err); } });

      请根据你的具体情况选择合适的方法。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部