node.js に関する私の知識はあまりよくなく、明らかな何かを見落としている可能性があります。
実験のために、URL のリスト (http-https、ホスト、およびポートの組み合わせ) を「クロール」する必要があります。これらの URL の 1 つが応答していません (ローカルで応答しているため、ミドルボックスの 1 つがブロックしていると思います)。問題はありませんが、エラーをキャッチできないため、アプリが壊れます。
var http2 = require('http2');
var req = http2.raw.get('http://xxx.yyy.zzz.a:23/', function(response) {
var content = '';
response.on('data', function(chunk) {
content += chunk;
})
response.on('end', function() {
console.log(content);
console.log('end');
});
});
req.on('error', function(error) {
console.error(error);
});
次のエラーがスローされます(でキャッチされますprocess.on('uncaughtException', ...)
):
{ [Error: connect ETIMEDOUT xxx.yyy.zzz.a:23]
code: 'ETIMEDOUT',
errno: 'ETIMEDOUT',
syscall: 'connect',
address: 'xxx.yyy.zzz.a',
port: 23 }
Error: connect ETIMEDOUT xxx.yyy.zzz.a:23
at Object.exports._errnoException (util.js:814:11)
at exports._exceptionWithHostPort (util.js:837:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1044:14)
関数が非同期であるため、try-catch は機能しません。
request.on('error')
このエラーをキャッチしていないようです。setTimeout
このライブラリには実装されていません。
TCP 接続にイベントを追加する必要があると思いますが、方法がわかりません。
node.js 0.12.7 と http2 3.2.0 を使用しています
何か案は?本当に感謝