私はリモートサービス(多くのWebソケット要求をws libraryを使って行うノードでアプリケーションを書いています)。したがって、リモートサービスはサーバーであり、ノードアプリケーションはクライアントです。これはかなりうまく動作しますが、時折私は突然、次のTimeoutErrorの長いリストを取得:私は今、そのためにこのエラーが発生した呼び出し不思議、さまざまのWebSocket呼び出しを行うのでノードTimeoutErrorを捕捉して要求をログに記録する方法は?
Unhandled rejection TimeoutError: ResourceRequest timed out
at ResourceRequest._fireTimeout (/Users/kramer65/repos/mmj/node_modules/generic-pool/lib/ResourceRequest.js:58:17)
at Timeout.bound (/Users/kramer65/repos/mmj/node_modules/generic-pool/lib/ResourceRequest.js:8:15)
at ontimeout (timers.js:386:11)
at tryOnTimeout (timers.js:250:5)
at Timer.listOnTimeout (timers.js:214:5)
を。私は下に貼り付けたので、ws.send()
をtry/catchでラップしようとしましたが、何もしないようです。
try {
ws.send(request_json);
} catch(e) {
console.log('WEBSOCKET ERROR', e);
console.log('WEBSOCKET JSON', request_json);
}
どのように私はTimeoutErrorをキャッチして要求の内容を記録することができます知っていますか?すべてのヒントは大歓迎です!
次のように私はws.send()メソッドへのコールバックを追加@Mark_Mによって示唆されるように[EDIT] :
ws.send(JSON.stringify(request_obj)), (error)=>{
console.log('WEBSOCKET ERROR', request_obj.action, error);
});
私はこの上に掲載され残念ながら、私はまだ同じエラーを取得質問。
[EDIT2] 私はまた@wranglerによって作られた提案しようとした:
ws.send(JSON.stringify(request_obj));
ws.onerror = function(event) {
console.log('WEBSOCKET ONERROR', request_obj.action, event);
};
ws.onclose = function (event){
console.log('WEBSOCKET ONCLOSE', request_obj.action, event);
};
を残念ながら、これも動作するようには思えません。この質問の先頭に投稿したのと同じエラーが表示されます。
他のアイデアはありますか?
私はあなたのコードを試してみましたが、私がした後、私はまだ前と同じエラーを得ました。だから彼らはackエラーコールバックに捕まえられません。私は最初の質問にそれを加えました。私は間違って何をすることができますか? – kramer65