Узел imap - нестабильное соединение inte rnet и ошибка сокета - PullRequest
0 голосов
/ 13 марта 2020

Я реализовал узел imap (https://github.com/mscdex/node-imap). Прослушивание писем в открытом почтовом ящике. Работает нормально и без проблем. Однако при работе с очень нестабильным соединением inte rnet кажется, что соединение потеряно и появляется какая-то ошибка:

Error: This socket is closed
    at Socket._writeGeneric (net.js:733:18)
    at Socket._write (net.js:787:8)
    at doWrite (_stream_writable.js:396:12)
    at clearBuffer (_stream_writable.js:523:7)
    at Socket.Writable.uncork (_stream_writable.js:312:7)
    at JSStreamWrap.doWrite (internal/wrap_js_stream.js:119:17)
    at JSStreamWrap.handle.onwrite (internal/wrap_js_stream.js:37:42)
    at shutdownSocket (net.js:286:23)
    at defaultTriggerAsyncIdScope (internal/async_hooks.js:281:19)
    at TLSSocket.Socket._final (net.js:312:13)
    at callFinal (_stream_writable.js:584:10)
    at _combinedTickCallback (internal/process/next_tick.js:139:11)
    at process._tickDomainCallback (internal/process/next_tick.js:219:9)

Насколько я знаю, у меня есть обработчики для всех соответствующих событий

  imap.once('error', function(err) {

  });

  imap.once('close', function(err) {

  });

  imap.once('end', function(err) {

  });

Однако ошибка не относится ни к одному из них. Кроме того, у меня есть все, что находится внутри try / catch, но ошибка приводит к сбою процесса узла, и мне приходится перезапускать его.

Любая идея, как go обойти это? В идеале перехватите ошибку и дайте ей возможность завершить / перезапустить соединение imap.

...