小编Jix*_*xun的帖子

节点http.request,如果发送请求后互联网停止,则不会触发任何事件

我在服务器上有以下 PHP 脚本,它将等待 10 秒并说Hello

<php sleep(10); ?>Hello
Run Code Online (Sandbox Code Playgroud)

在客户端(节点),我有以下内容:

var http = require('http');
http.get ('http://example.com/sleep.php', function (resp) {
    resp.on('data', function (d) {
        console.log ('data!', d.toString());
    });
    resp.on('end', function (d) {
        console.log ('Finished!');
    });
}).on('error', function (e) {
    console.log ('error:', e);
});
Run Code Online (Sandbox Code Playgroud)

问题是,如果在请求期间互联网连接停止,则不会触发errorORend事件。

要重现问题:

  • 将 PHP 脚本放置在 Internet 上的某个位置
  • 执行节点脚本
  • 断开互联网连接
  • 该脚本不执行任何操作

我还发现,如果连接在 10 秒内恢复,它仍然可以接收消息。

因此,我做了一个简单的间隔循环来检查状态。但是它无法检测连接是否已停止工作或仍在等待响应:

var http = require('http');
var lastRespond = 0, intervalCheck;
var respFinished = false;
http.get ('http://jixun.no-ip.org/sleep.php', function (resp) {
    resp.on('data', …
Run Code Online (Sandbox Code Playgroud)

client http request node.js

5
推荐指数
1
解决办法
2354
查看次数

标签 统计

client ×1

http ×1

node.js ×1

request ×1