我在服务器上有以下 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事件。
要重现问题:
我还发现,如果连接在 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)