Рубрики
Без рубрики

Трубный поток в экспресс

Первоначально опубликовано 13 ноября 2017 года (подробнее) Как часть проекта, над которым я работаю, мне нужно … Теги с JavaScript, Streams, Express, фрагментом.

Первоначально опубликовано 13 ноября 2017 ( Подробнее )

В рамках проекта я работаю, мне нужно схватить некоторые данные через HTTP/S и передавать его как двоичные, но с доступом к этим заголовкам. Ниже приведен быстрое доказательство концепции для прослушивания HTTP-запросов с Express, запросить внешнее изображение по запросу и выполнить ответ верным в разъем Express Response, имея доступ к метаданным откликам, таких как заголовки.

'use strict'

const express = require('express')
const request = require('request')
const through2 = require('through2')

const app = express()
const imageUrl = 'http://via.placeholder.com/800x600?text=example'

app.use((incomingRequest, outgoingResponse) => {
  const outgoingRequest = request(imageUrl)
  const bufferOnPipe = through2(function (chunk, enc, callback) {
    this.push(chunk)
    callback()
  })
  const bufferedResponse = outgoingRequest.pipe(bufferOnPipe)

  outgoingRequest.on('response', (incomingResponse) => {
    if (incomingResponse.statusCode === 200) {
      console.log('statusCode:', incomingResponse.statusCode)
      console.log('headers:', incomingResponse.headers)
      bufferedResponse.pipe(outgoingResponse)
    } else {
      console.log('non-200 statusCode:', incomingResponse.statusCode)
    }
  })
})

app.listen(8000, () => {
  console.log('listening on 8000')
})

Следующий пост последовательно: пройти запрос буфера через Redis

Оригинал: “https://dev.to/adamkdean/pipe-stream-to-express-1jm6”