【问题标题】:How to make a connection wait in a non blocking way in node.js?如何在node.js中以非阻塞方式使连接等待?
【发布时间】:2023-04-07 20:58:01
【问题描述】:

我对 node.js 很好奇,我花了几个小时阅读和观看视频。我没有写那么多代码,但在我写的几行代码中出现了意外行为:

var http = require('http');
http.createServer(function (req, res) {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.write('Wait some seconds please<br/>');

      setTimeout(function() {
       res.end("I'm done");   
      }, 10 * 1000);
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');

当有传入请求时,应该使用此代码:

  1. 在输出的第一行写入
  2. 十秒后请求节点调用函数,然后让浏览器等待
  3. 写第二行并返回。

因此,我假设如果我在第一个请求待处理时使用另一个浏览器调用服务器,我会收到一个与第一个请求并行处理的新请求。

但是服务器没有响应,然后第二个浏览器只是等到第一个请求完成以从服务器获取其内容。然后我假设 setTimeout 是阻塞的。我怎样才能实现上面首先描述的目标。

【问题讨论】:

  • 您的代码似乎遇到了与该问题相同的问题 - 您是否以块的形式获得响应是特定于浏览器的。
  • 我看到了写的数据,我很确定我写的 Firefox 的等待动画项在尝试连接和等待服务器应答时不一样

标签: javascript node.js


【解决方案1】:

您的问题是浏览器对当前请求的数量有限制。您可以尝试对来自 IE 的一个请求和来自 Firefox 的一个请求执行相同的操作,我相信它会起作用。我确定这不是 nodejs 问题。

【讨论】:

  • 好的,我的代码是正确的,是 Firefox 阻止了多个请求从同一资源发送。谢谢!
猜你喜欢
  • 2021-05-26
  • 1970-01-01
  • 2015-08-28
  • 2012-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-05
相关资源
最近更新 更多