Ошибка: прочитайте ECONNRESET ExpressJS и Amazon S3

Я использую плагин Knox S3 в веб-приложении ExpressJS для отображения изображения, загруженного в Amazon S3. При отображении изображения у меня иногда появляется ошибка ниже. Я не имею понятия об ошибке. Что вызвало ошибку?

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: read ECONNRESET
    at errnoException (net.js:884:11)
    at TCP.onread (net.js:539:19)

Вот как я отрисовываю изображение из Amazon S3:

var data = '';
client.get(url).on('response', function(s3res) {
    s3res.setEncoding('binary');
    s3res.on('data', function(chunk){
        data += chunk;
    });
    s3res.on('end', function() {
        res.contentType('image/jpg');
        res.write(data, encoding='binary');
        res.end();
    });
}).end();

1 ответ

Так как событие потока может произойти для потока, возможно, вы пишете быстрее, чем другой поток способен читать. Вы должны использовать трубу, которая обрабатывает это для вас:

s3res.pipe(response);

http://nodejs.org/api/stream.html

Это из документации по nodejs: этот метод извлекает все данные из потока, доступного для чтения, и записывает их в предоставленный пункт назначения, автоматически управляя потоком так, чтобы этот пункт назначения не был перегружен потоком, который можно быстро прочитать.

Другие вопросы по тегам