Giter VIP home page Giter VIP logo

node-prefix-drip-stream's Introduction

What

Given a prefix, this read/write stream will pre-emptively write small increments ("drip") until actual content is written to the stream.

Why

The primary use case is to get around things like Heroku's connection timeout (which will die if no data is transferred for 30 seconds). If you have an image manipulation service with a known header, you can write bits of it out in order to buy yourself time.

Example

var request = require('request');
var PrefixDripStream = require('prefix-drip-stream');
var PNG_HEADER = new Buffer('89504e470d0a1a0a', 'hex'); // png's "magic number"
var IMAGE_URL = 'http://upload.wikimedia.org/wikipedia/en/1/13/S3_Graphics_Logo.png';
// pre-emptivly write a bit of the png header every second until we get actual data
var drip = new PrefixDripStream(PNG_HEADER, 1000);

app.get('/', function (req, res) {
  request(IMAGE_URL).pipe(drip).pipe(res);
});

Warnings

  • If you're using this to get around heroku's 30s timeout, you should probably follow their advice and move the processing into a background task...The only reason I went this route is it saved having to use a database entirely.
  • Be certain that you know that the prefix you specify is the first data that will be written to your pipe...otherwise you've just corrupted your data.

node-prefix-drip-stream's People

Contributors

pwmckenna avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.